Вопрос

Я использую SQL Server 2005.У меня есть таблица с текстовым столбцом, и у меня есть много строк в таблице, где значение этого столбца не равно null, но оно пустое.Попытка сравнить с " приводит к такому ответу:

Типы данных text и varchar несовместимы в операторе not equal to.

Существует ли специальная функция для определения, является ли значение текстового столбца не нулевым, а пустым?

Это было полезно?

Решение

where datalength(mytextfield)=0

Другие советы

ISNULL(
case textcolum1
    WHEN '' THEN NULL
    ELSE textcolum1
END 
,textcolum2) textcolum1

На самом деле, вам просто нужно использовать оператор LIKE .

SELECT * FROM mytable WHERE mytextfield LIKE ''

Чтобы получать только пустые значения (а не нулевые значения):

SELECT * FROM myTable WHERE myColumn = ''

Чтобы получить как нулевые, так и пустые значения:

SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''

Чтобы получить только нулевые значения:

SELECT * FROM myTable WHERE myColumn IS NULL

Чтобы получить значения, отличные от null и empty:

SELECT * FROM myTable WHERE myColumn <> ''


И помните, используйте ПОХОЖИЕ фразы только при необходимости, потому что они снизят производительность по сравнению с другими типами поиска.

Я знаю, что этот пост древний, но я нашел его полезным.

Это не решило мою проблему с возвратом записи с непустым текстовым полем, поэтому я подумал, что добавлю свое решение.

Это предложение where, которое сработало у меня.

WHERE xyz LIKE CAST('% %' as text)

Использование ДЛИНА ДАННЫХ способ, например:

SELECT length = DATALENGTH(myField)
FROM myTABLE

Я бы проверил против ПОДСТРОКА(Текстовый столбец, 0, 1)

Эквивалентны ли null и пустая строка?Если это так, я бы включил логику в свое приложение (или, может быть, триггер, если приложение "из коробки"?) чтобы заставить поле быть либо нулевым, либо ", но не другим.Если вы выбрали ", то вы также могли бы установить для столбца значение NOT NULL.Просто вопрос чистоты данных.

Я хотел, чтобы заранее определенный текст ("Лаборатории недоступны") отображался, если значение было нулевым или пустым, и мой друг помог мне с этим:

StrengthInfo = CASE WHEN ((SELECT COUNT(UnitsOrdered) FROM [Data_Sub_orders].[dbo].[Snappy_Orders_Sub] WHERE IdPatient = @PatientId and IdDrugService = 226)> 0)
                            THEN cast((S.UnitsOrdered) as varchar(50))
                    ELSE 'No Labs Available'
                    END

Вы должны делать и то, и другое:

SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''

Используйте оператор IS NULL:

Select * from tb_Employee where ename is null

Я знаю, что есть много ответов с альтернативами этой проблеме, но я просто хотел бы собрать воедино то, что я нашел в качестве лучшего решения @Eric Z Beard & @Tim Cooper с @Enrique Garcia & @Uli Köhler.

Если необходимо, чтобы справиться с тем фактом, что значение только для пробела может совпадать с значением empty в вашем сценарии использования, потому что приведенный ниже запрос вернет 1, а не 0.

SELECT datalength(' ')

Поэтому я бы выбрал что-то вроде:

SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''

попробуй это:

select * from mytable where convert(varchar, mycolumn) = ''

я надеюсь помочь тебе!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top