|
Баг с порядком выполнения Cast / CHECK ?
|
|||
---|---|---|---|
#18+
Допустим я хочу, чтобы все 4 символа содержали цифры и хоты бы один из символов не должен быть '0'. Делаю следующий домен: Код: sql 1. 2. 3.
Естественно в надежде, что при выполнении чего то типа: Код: sql 1.
сервер сначала выполнит приведение к CHAR(4), дополнив строку 'бланками', а затем проверит результат по условию в CHEK. В результате сервер проглатывает оператор SELECT и выдает результат, хотя ожидаемой реакцией сервера для меня был бы результат, который я получаю при выполнении: Код: sql 1.
Кто что думает по этому поводу? Это "лыжи не едут" или со мной что-то не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2017, 09:57 |
|
Баг с порядком выполнения Cast / CHECK ?
|
|||
---|---|---|---|
#18+
rdb_dev, а с чего ты взял что это баг? Используй VARCHAR и будет работать так как ты хочешь ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2017, 10:00 |
|
Баг с порядком выполнения Cast / CHECK ?
|
|||
---|---|---|---|
#18+
Симонов Денис, VARCHAR не поможет. Требуется, чтобы, в конечном счете, проверке подвергались все 4 символа (не больше и не меньше) независимо от количества символов в переданной строке. Т.е., ИМХО, сначала должно быть выполнено преобразование к CHAR(4), а затем проверка условия CHECK. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2017, 10:32 |
|
Баг с порядком выполнения Cast / CHECK ?
|
|||
---|---|---|---|
#18+
В общем, частично выкрутился: Код: sql 1. 2. 3.
но необходимость в понимании - что и в какой очередности должен делать сервер и почему, осталась. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2017, 13:20 |
|
|
start [/forum/topic.php?fid=40&msg=39448700&tid=1561612]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 240ms |
0 / 0 |