Thread: AW: Truncation of char, varchar types
> Excessively long values are currently silently truncated when they are > inserted into char or varchar fields. This makes the entire notion of > specifying a length limit for these types kind of useless, IMO. Needless > to say, it's also not in compliance with SQL. To quote Tom "paragraph and verse please" :-) > How do people feel about changing this to raise an error in this > situation? Can't do. > Does anybody rely on silent truncation? Yes, iirc the only thing you are allowed to do is issue a warning, but the truncation is allowed and must succeed. (checked in Informix and Oracle) The appropriate SQLSTATE is: "01004" String data, right truncation note that class 01 is a "success with warning". Andreas
Zeugswetter Andreas SB writes: > > Excessively long values are currently silently truncated when they are > > inserted into char or varchar fields. This makes the entire notion of > > specifying a length limit for these types kind of useless, IMO. Needless > > to say, it's also not in compliance with SQL. > > To quote Tom "paragraph and verse please" :-) SQL 1992, 9.2 GR 3 e) """ If the data type of T is variable-length character string and the length in characters M of V is greater than the maximum length in characters L of T, then, Case: i) If the rightmost M-L characters of V are all <space>s, then the value of T is set to the first L characters of V and the length in characters of T is set to L. ii) If one or more of the rightmost M-L characters of V are not <space>s, then an exception condition is raised: data ^^^^^^^^^ exception-string data, right truncation. """ Similarly in SQL 1999 and for other data types. > > How do people feel about changing this to raise an error in this > > situation? > > Can't do. Why not? -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/
Zeugswetter Andreas SB wrote: > Yes, iirc the only thing you are allowed to do is issue a warning, > but the truncation is allowed and must succeed. > (checked in Informix and Oracle) ? As much as I remember, Oracle raises an error. But it's been a few years since I last touched it, so maybe I'm wrong. -- Alessio F. Bragadini alessio@albourne.com APL Financial Services http://village.albourne.com Nicosia, Cyprus phone: +357-2-755750 "It is more complicated than you think" -- The Eighth Networking Truth from RFC 1925