196

SQL Server 2005 を使用しています。テキスト列を含むテーブルがあり、この列の値が null ではなく空の行がテーブルに多数あります。'' と比較しようとすると、次の応答が返されます。

データ型 text と varchar は、等しくない演算子では互換性がありません。

テキスト列の値が null ではなく空かどうかを判断する特別な関数はありますか?

4

17 に答える 17

327
where datalength(mytextfield)=0
于 2008-08-28T21:14:17.417 に答える
51
ISNULL(
case textcolum1
    WHEN '' THEN NULL
    ELSE textcolum1
END 
,textcolum2) textcolum1
于 2010-06-23T18:29:42.083 に答える
32

実際には、LIKE 演算子を使用するだけです。

SELECT * FROM mytable WHERE mytextfield LIKE ''
于 2008-08-29T06:06:25.033 に答える
3
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''
于 2014-02-10T19:21:43.770 に答える
2

IS NULL 演算子を使用します。

Select * from tb_Employee where ename is null
于 2013-06-04T10:49:48.383 に答える
1

この投稿が古いことは知っていますが、役に立ちました。

空でないテキストフィールドでレコードを返すという問題は解決しなかったので、解決策を追加すると思いました。

これは私のために働いたwhere句です。

WHERE xyz LIKE CAST('% %' as text)
于 2012-06-13T15:05:47.797 に答える
1

DATALENGTHメソッドを使用します。次に例を示します。

SELECT length = DATALENGTH(myField)
FROM myTABLE
于 2015-08-27T20:15:21.317 に答える
0

あなたは両方をしなければなりません:

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

于 2012-09-07T23:11:46.983 に答える
0

値が null または空の場合に定義済みのテキスト ("No Labs Available") を表示したかったので、友人がこれを手伝ってくれました:

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
于 2012-03-07T19:50:03.903 に答える
0

この問題には代替案がたくさんあることは知っていますが、@Eric Z Beard & @Tim Cooper と @Enrique Garcia & @Uli Köhler が最良の解決策として見つけたものをまとめたいと思います。

以下のクエリは 0 ではなく 1 を返すため、ユース ケース シナリオでスペースのみが空と同じになる可能性があるという事実に対処する必要がある場合。

SELECT datalength(' ')

したがって、私は次のようなものに行きます:

SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
于 2015-08-07T10:09:12.430 に答える
0

SUBSTRING (textColumn, 0, 1)に対してテストします

于 2008-08-28T21:11:00.483 に答える
0

null と空の文字列は同等ですか? もしそうなら、アプリケーションにロジックを含めて(または、アプリが「すぐに使える」場合はトリガー?)、フィールドを強制的に null または '' にしますが、もう一方にはしません。'' を使用した場合は、列を NOT NULL に設定することもできます。単なるデータのクリーンさです。

于 2008-08-29T20:03:04.603 に答える