Intereting Posts
MS SQL выбирает дату и время в месяц? SQL Server: FOR XML PATH – вложенность / группировка SQL FOR XML PATH и COUNT Используя C # и SMO, как мне добавить резервное устройство на SQL Server? Я хочу, чтобы моя база данных (SQL) уведомляла или нажимала обновления для клиентского приложения XML-значения для извлечения в одном столбце с любым (,) разделителем (2) В чем преимущество использования varbinary над varchar здесь? Проблема с производительностью Сглаживание XML в SQL с использованием узлов, методов значений и кросс-приложений SQL-запрос – подсчет новых определенных значений из CASE Групповые несмежные даты по критериям в столбце (продолжение) создать хранимую процедуру с помощью оператора 'use' Запрос SQL Server: получить сумму условно Функция, связанная с таблицей, убивающая мою эффективность запросов Ошибка добавления индекса в представление Из Server \ Instance, как определить зависимость службы?

Как проверить, пуст ли текстовый столбец SQL Server?

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

Текст типов данных и varchar несовместимы в не равном оператору.

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

Solutions Collecting From Web of "Как проверить, пуст ли текстовый столбец SQL Server?"

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 

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

 SELECT * FROM myTable WHERE myColumn <> '' 

И помните, что используйте LIKE-фразы только тогда, когда это необходимо, потому что они ухудшат производительность по сравнению с другими типами запросов.

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

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

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

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

Вы могли бы сделать

 SELECT * FROM TABLE WHERE FIELDNAME='' 

Я проверил бы против SUBSTRING (textColumn, 0, 1)

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

 Select * from tb_Employee where ename is 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 ''

 SELECT * FROM TABLE WHERE ISNULL(LTRIM(RTRIM(FIELD)),''='' 

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

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

 SELECT datalength(' ') 

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

 SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], '')))) 

Используйте метод DATALENGTH , например:

 SELECT length = DATALENGTH(myField) FROM myTABLE