Jak sprawdzić, czy kolumna tekstowa SQL Server jest pusta?
Używam SQL Server 2005. Mam tabelę z kolumną tekstową i mam wiele wierszy w tabeli, gdzie wartość tej kolumny nie jest null, ale jest pusta. Próba porównania z " daje tę odpowiedź:
Typy danych text i varchar są niezgodne w operatorze not equal to.
Czy istnieje specjalna funkcja określająca, czy wartość kolumny tekstowej nie jest null, ale pusta?
15 answers
where datalength(mytextfield)=0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-17 14:54:02
ISNULL(
case textcolum1
WHEN '' THEN NULL
ELSE textcolum1
END
,textcolum2) textcolum1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-03 18:08:21
Właściwie, wystarczy użyć podobnego operatora.
SELECT * FROM mytable WHERE mytextfield LIKE ''
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 06:06:25
Aby uzyskać tylko puste wartości (a nie wartości null):
SELECT * FROM myTable WHERE myColumn = ''
Aby uzyskać zarówno wartości null, jak i empty:
SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
Aby uzyskać tylko wartości null:
SELECT * FROM myTable WHERE myColumn IS NULL
Aby uzyskać wartości inne niż null i empty:
SELECT * FROM myTable WHERE myColumn <> ''
I pamiętaj, że używaj podobnych fraz tylko wtedy, gdy jest to konieczne, ponieważ pogorszą one wydajność w porównaniu do innych typów wyszukiwań.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-29 06:28:35
Wiem, że ten post jest starożytny, ale uznałem go za przydatny.
Nie rozwiązało to mojego problemu ze zwróceniem rekordu z niepustym polem tekstowym, więc pomyślałem, że dodam swoje rozwiązanie.
To jest klauzula where, która działała dla mnie.
WHERE xyz LIKE CAST('% %' as text)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-14 07:49:43
Możesz zrobić jak
SELECT * FROM TABLE WHERE FIELDNAME=''
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-21 15:26:12
Testowałbym na SUBSTRING (textColumn, 0, 1)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 21:11:00
Użyj operatora IS NULL:
Select * from tb_Employee where ename is null
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 10:49:48
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-08 22:39:53
Czy null i pusty łańcuch są równoważne? Jeśli tak, to włączę logikę w mojej aplikacji (a może WYZWALACZ, jeśli aplikacja jest "out-of-the-box"?) wymusić, aby pole było albo null, albo", ale nie inne. Jeśli wybrałeś", możesz również ustawić kolumnę na NOT NULL. Chodzi o czystość danych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 20:03:04
Chciałem mieć predefiniowany tekst ("No Labs Available") do wyświetlenia, jeśli wartość jest null lub empty i mój przyjaciel pomógł mi w tym:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-07 19:50:03
Musisz zrobić jedno i drugie:
SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-07 23:11:46
Wiem, że istnieje wiele odpowiedzi z alternatywami dla tego problemu, ale chciałbym po prostu połączyć to, co znalazłem jako najlepsze rozwiązanie przez @ Eric Z Beard & @ Tim Cooper z @ Enrique Garcia & @uli Köhler.
Jeśli jest to konieczne, aby poradzić sobie z faktem, że spacja może być taka sama jak pusta w Twoim przypadku użycia, ponieważ poniższe zapytanie zwróci 1, a nie 0.
SELECT datalength(' ')
Dlatego wybrałbym coś w stylu:
SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-07 10:09:12
Użycie DATALENGTH metoda, na przykład:
SELECT length = DATALENGTH(myField)
FROM myTABLE
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-27 20:15:21
Spróbuj tego:
select * from mytable where convert(varchar, mycolumn) = ''
I hope help u!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-10 12:47:16