powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / select 1 where 0 != ''
25 сообщений из 32, страница 1 из 2
select 1 where 0 != ''
    #39664164
Skulll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день дорогие Эскуэльшики,

Я на борту 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
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664166
Skulll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll,

Я понимаю что можно сделать OID_FLAG_IN_PRIOR IS NOT NULL and CAST(OID_FLAG_IN_PRIOR as varchar) != '' но зачем мне писать такую длинную конструкцию, почему я не могу полагаться просто на OID_FLAG_IN_PRIOR != '' ?
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664167
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulllselect 1 where 0 != ''
патамуша гладиолус...
where без from в T-SQL не бывает
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664168
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll, нхнп OID_FLAG_IN_PRIOR > ''
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664169
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll, и да пустая строка покастится к нулю
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664170
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll,

да хоть LEN > 0 хоть value > ''
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664174
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll,

авторвот что MS SQL конвертирует эти значения, как это можно узнать?
конвертирует к более высокому приоритету типов
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664175
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxxwhere без from в T-SQL не бывает

это начиная с какой версии так?
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664178
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПосетительMaxxwhere без from в T-SQL не бывает

это начиная с какой версии так?
у гладиолусов свой TSQL с WHERE и FROM :)
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664187
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkulllТ.е. OID_FLAG_IN_PRIOR может быть числом, может быть строкой, там могут быть любые данные
Вышеприведенная простая формула не работает если внутри OID_FLAG_IN_PRIOR я имею 0 и не понимаю вот что MS SQL конвертирует эти значения, как это можно узнать?Внутри OID_FLAG_IN_PRIOR вы имеете не 0, а строку '0'
Это же у вас строковое поле?
А далее приоритет операций, как вам уже написали.
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664189
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

автор приоритет операций, типов
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664194
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или, если OID_FLAG_IN_PRIOR численного типа, то у вас не может быть: SkulllЯ понимаю что можно сделать OID_FLAG_IN_PRIOR IS NOT NULL and OID_FLAG_IN_PRIOR != '', потому что вы не можете "хотеть", что бы число было равно или неравно некой строке

Вам тогда нужно всё таки понять, какое условие вы хотите сделать с использованием вашего поля, с учётом типа данных этого поля.
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664195
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKalexeyvg,

автор приоритет операций, типовДа. оговорился, спасибо за поправку.
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664206
Skulll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо,

LEN(любой тип данных) > 0 вроде работает с любым типом данных

а вот value > '' работает только со строками, а вот с числами его нужно прокастить
select 1
where cast(0 as varchar) > ''

так что LEN(value) > 0 более универсальный

Еще раз спасибо
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664208
Skulll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, этих полей сотни, и я не хочу для разных типов данных писать разный код, я хочу один универсальный который был давал ТРУ если поле не НУЛЛ и не пустая строка
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664210
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll,

откуда возьмется любой тип данных, если TSQL имеет строгую типизацию? Вы там инъекциями занимаетесь, что ли? Это код с очень плохим запахом.
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664215
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select 1 where 0=1

чет я прогнал, в жизни не разу такое не писал , гы
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664218
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skulll,

что-то никто ссылку не дал... Сходите, почитайте:

Приоритет типов данных (Transact-SQL)
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664229
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxxselect 1 where 0=1

чет я прогнал, в жизни не разу такое не писал , гыПотому что из Oracle, да?
Там такое нельзя. Там, говорят, dual есть!
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664237
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapПотому что из Oracle, да?
Там такое нельзя. Там, говорят, dual есть!
нет... просто за 20 лет не разу не надо такое было честно
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664239
Skulll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapSkulll,

что-то никто ссылку не дал... Сходите, почитайте:

Приоритет типов данных (Transact-SQL)

Спасибо, полезная ссылка
Я из Оракла пришел, там можно сказать все наоборот
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664240
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxxiapПотому что из Oracle, да?
Там такое нельзя. Там, говорят, dual есть!
нет... просто за 20 лет не разу не надо такое было честноА я за 30 делал такое регулярно!
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664242
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkullliapSkulll,

что-то никто ссылку не дал... Сходите, почитайте:

Приоритет типов данных (Transact-SQL)

Спасибо, полезная ссылка
Я из Оракла пришел, там можно сказать все наоборот
а справки читать это вообще только для детей
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/equals-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664243
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapА я за 30 делал такое регулярно!
ну на вкус и цвет все фломастеры разные :)
...
Рейтинг: 0 / 0
select 1 where 0 != ''
    #39664244
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxxSkulllselect 1 where 0 != ''
патамуша гладиолус...
where без from в T-SQL не бывает

серьёзно? вот это да....
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / select 1 where 0 != ''
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]