Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Добрый день дорогие Эскуэльшики, Я на борту Microsoft SQL Server 2014 (SP2-CU3) (KB3204388) - 12.0.5538.0 (X64) Dec 15 2016 17:52:48 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) Пытаюсь понять почему данное выражение не работает select 1 where 0 != '' Если кто хочет знать предысторию, то мне нужна универсальная формула подходящая под любые форматы и данные ISNULL("OID_FLAG_IN_PRIOR",'') != '' Т.е. OID_FLAG_IN_PRIOR может быть числом, может быть строкой, там могут быть любые данные Вышеприведенная простая формула не работает если внутри OID_FLAG_IN_PRIOR я имею 0 и не понимаю вот что MS SQL конвертирует эти значения, как это можно узнать? Я понимаю что можно сделать OID_FLAG_IN_PRIOR IS NOT NULL and OID_FLAG_IN_PRIOR != '' но мне интересно почему я не могу полагаться на MS SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 12:56 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulll, Я понимаю что можно сделать OID_FLAG_IN_PRIOR IS NOT NULL and CAST(OID_FLAG_IN_PRIOR as varchar) != '' но зачем мне писать такую длинную конструкцию, почему я не могу полагаться просто на OID_FLAG_IN_PRIOR != '' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 12:59 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulllselect 1 where 0 != '' патамуша гладиолус... where без from в T-SQL не бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:00 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulll, нхнп OID_FLAG_IN_PRIOR > '' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:01 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulll, и да пустая строка покастится к нулю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:03 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulll, да хоть LEN > 0 хоть value > '' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:03 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulll, авторвот что MS SQL конвертирует эти значения, как это можно узнать? конвертирует к более высокому приоритету типов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:05 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Maxxwhere без from в T-SQL не бывает это начиная с какой версии так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:05 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
ПосетительMaxxwhere без from в T-SQL не бывает это начиная с какой версии так? у гладиолусов свой TSQL с WHERE и FROM :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:07 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
SkulllТ.е. OID_FLAG_IN_PRIOR может быть числом, может быть строкой, там могут быть любые данные Вышеприведенная простая формула не работает если внутри OID_FLAG_IN_PRIOR я имею 0 и не понимаю вот что MS SQL конвертирует эти значения, как это можно узнать?Внутри OID_FLAG_IN_PRIOR вы имеете не 0, а строку '0' Это же у вас строковое поле? А далее приоритет операций, как вам уже написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:14 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
alexeyvg, автор приоритет операций, типов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:15 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Или, если OID_FLAG_IN_PRIOR численного типа, то у вас не может быть: SkulllЯ понимаю что можно сделать OID_FLAG_IN_PRIOR IS NOT NULL and OID_FLAG_IN_PRIOR != '', потому что вы не можете "хотеть", что бы число было равно или неравно некой строке Вам тогда нужно всё таки понять, какое условие вы хотите сделать с использованием вашего поля, с учётом типа данных этого поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:17 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
TaPaKalexeyvg, автор приоритет операций, типовДа. оговорился, спасибо за поправку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:18 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Спасибо, LEN(любой тип данных) > 0 вроде работает с любым типом данных а вот value > '' работает только со строками, а вот с числами его нужно прокастить select 1 where cast(0 as varchar) > '' так что LEN(value) > 0 более универсальный Еще раз спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:35 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
alexeyvgSkulllТ.е. OID_FLAG_IN_PRIOR может быть числом, может быть строкой, там могут быть любые данные Вышеприведенная простая формула не работает если внутри OID_FLAG_IN_PRIOR я имею 0 и не понимаю вот что MS SQL конвертирует эти значения, как это можно узнать?Внутри OID_FLAG_IN_PRIOR вы имеете не 0, а строку '0' Это же у вас строковое поле? А далее приоритет операций, как вам уже написали. В данном случае OID_FLAG_IN_PRIOR это INT, но есть другие поля с другим именем которые VARCHAR and DECIMAL, этих полей сотни, и я не хочу для разных типов данных писать разный код, я хочу один универсальный который был давал ТРУ если поле не НУЛЛ и не пустая строка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:37 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Skulll, откуда возьмется любой тип данных, если TSQL имеет строгую типизацию? Вы там инъекциями занимаетесь, что ли? Это код с очень плохим запахом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:41 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
select 1 where 0=1 чет я прогнал, в жизни не разу такое не писал , гы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:52 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
Maxxselect 1 where 0=1 чет я прогнал, в жизни не разу такое не писал , гыПотому что из Oracle, да? Там такое нельзя. Там, говорят, dual есть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 13:58 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
iapПотому что из Oracle, да? Там такое нельзя. Там, говорят, dual есть! нет... просто за 20 лет не разу не надо такое было честно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 14:08 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
iapSkulll, что-то никто ссылку не дал... Сходите, почитайте: Приоритет типов данных (Transact-SQL) Спасибо, полезная ссылка Я из Оракла пришел, там можно сказать все наоборот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 14:10 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
MaxxiapПотому что из Oracle, да? Там такое нельзя. Там, говорят, dual есть! нет... просто за 20 лет не разу не надо такое было честноА я за 30 делал такое регулярно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 14:11 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
SkullliapSkulll, что-то никто ссылку не дал... Сходите, почитайте: Приоритет типов данных (Transact-SQL) Спасибо, полезная ссылка Я из Оракла пришел, там можно сказать все наоборот а справки читать это вообще только для детей https://docs.microsoft.com/en-us/sql/t-sql/language-elements/equals-transact-sql?view=sql-server-2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 14:12 |
|
||
|
select 1 where 0 != ''
|
|||
|---|---|---|---|
|
#18+
iapА я за 30 делал такое регулярно! ну на вкус и цвет все фломастеры разные :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39664167&tid=1689520]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 445ms |

| 0 / 0 |
