SQL Server のテキスト列が空かどうかを確認するにはどうすればよいですか?
-
09-06-2019 - |
質問
SQL Server 2005 を使用しています。テキスト列を含むテーブルがあり、テーブル内にこの列の値が null ではなく空である行が多数あります。'' と比較しようとすると、次の応答が得られます。
データ型 text と varchar は、不等号演算子では互換性がありません。
テキスト列の値が null ではなく空かどうかを判断する特別な関数はありますか?
解決
where datalength(mytextfield)=0
他のヒント
ISNULL(
case textcolum1
WHEN '' THEN NULL
ELSE textcolum1
END
,textcolum2) textcolum1
実際には、LIKE 演算子を使用するだけです。
SELECT * FROM mytable WHERE mytextfield LIKE ''
(null 値ではなく) 空の値のみを取得するには:
SELECT * FROM myTable WHERE myColumn = ''
null 値と空の値の両方を取得するには、次のようにします。
SELECT * FROM myTable WHERE myColumn IS NULL OR myColumn = ''
null 値のみを取得するには、次のようにします。
SELECT * FROM myTable WHERE myColumn IS NULL
null と空以外の値を取得するには、次のようにします。
SELECT * FROM myTable WHERE myColumn <> ''
また、LIKE フレーズは他の種類の検索に比べてパフォーマンスが低下するため、必要な場合にのみ使用するようにしてください。
この投稿が古いことは承知していますが、役に立つと思いました。
空ではないテキストフィールドを含むレコードを返すという問題は解決しなかったので、解決策を追加しようと思いました。
これは私にとってうまくいった where 句です。
WHERE xyz LIKE CAST('% %' as text)
使用 データ長 メソッド、たとえば:
SELECT length = DATALENGTH(myField)
FROM myTABLE
私はそれに対してテストします 部分文字列(テキスト列、0、1)
null と空の文字列は同等ですか?そうである場合、フィールドを null または '' のいずれかにし、もう一方には強制しないロジックをアプリケーションに含めます (または、アプリが「すぐに使用できる」場合はトリガー?)。'' を使用した場合は、列を NOT NULL に設定することもできます。単なるデータのクリーンさの問題です。
値が 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 が最良の解決策として見つけたものをまとめたいと思います。
以下のクエリは 0 ではなく 1 を返すため、ユースケース シナリオではスペースのみが空と同じになる可能性があるという事実に対処する必要がある場合。
SELECT datalength(' ')
したがって、私は次のようなものを選びます。
SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''
これを試して:
select * from mytable where convert(varchar, mycolumn) = ''
あなたを助けてくれることを願っています!