![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
The following bug has been logged online: Bug reference: 2390 Logged by: Andreas Kretschmer Email address: andreas.kretschmer (AT) schollglas (DOT) com PostgreSQL version: 8.1.3 Operating system: Debian Linux Description: check constraint Details: i want to add a check constraint like: create table foo (i char(7) CHECK (i ~ '^[0-9]{6,7}$')); i doesn't work, but if works, if i change the type for i to varchar(7). |
#3
| |||
| |||
|
|
On Wed, 12 Apr 2006, Andreas Kretschmer wrote: i want to add a check constraint like: create table foo (i char(7) CHECK (i ~ '^[0-9]{6,7}$')); i doesn't work, but if works, if i change the type for i to varchar(7). Well, the regex doesn't entirely make sense for char(n) data. It's not possible to have 6 characters between beginning and end because it's a fixed length 7 character string. If you try to insert '000000' into i, you're actually inserting '000000 ' which is invalid by the constraint. |
#4
| |||
| |||
|
|
Stephan Szabo <sszabo (AT) megazone (DOT) bigpanda.com> writes: On Wed, 12 Apr 2006, Andreas Kretschmer wrote: i want to add a check constraint like: create table foo (i char(7) CHECK (i ~ '^[0-9]{6,7}$')); i doesn't work, but if works, if i change the type for i to varchar(7). Well, the regex doesn't entirely make sense for char(n) data. It's not possible to have 6 characters between beginning and end because it's a fixed length 7 character string. If you try to insert '000000' into i, you're actually inserting '000000 ' which is invalid by the constraint. You could argue that since we consider trailing spaces not to be semantically significant in char(n), it would be more consistent to strip those spaces before performing the regex match. |

![]() |
| Thread Tools | |
| Display Modes | |
| |