SQL Server 2005を使用しています。テキスト列を含むテーブルがあり、テーブルにこの列の値がnullではないが空である多くの行があります。''と比較しようとすると、次の応答が得られます。
データ型textとvarcharは、等しくない演算子では互換性がありません。
テキスト列の値がnullではなく空かどうかを判別する特別な関数はありますか?
SQL Server 2005を使用しています。テキスト列を含むテーブルがあり、テーブルにこの列の値がnullではないが空である多くの行があります。''と比較しようとすると、次の応答が得られます。
データ型textとvarcharは、等しくない演算子では互換性がありません。
テキスト列の値がnullではなく空かどうかを判別する特別な関数はありますか?
回答:
where datalength(mytextfield)=0
OR mytextfield IS NULL
。列が可能なときに追加することを忘れないでくださいNULL
mytextfield IS NULL *OR*
:-)
実際には、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フレーズは他のタイプの検索と比較してパフォーマンスが低下するため、必要な場合にのみ使用することを忘れないでください。
myColumn IS NOT NULL AND my column = '';
ですか?
SELECT * FROM TABLE
WHERE ISNULL(FIELD, '')=''
SQL SELECT * FROM TABLE WHERE IFNULL(FIELD, '')=''
DATALENGTHメソッドを使用します。次に例を示します。
SELECT length = DATALENGTH(myField)
FROM myTABLE
値が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
これを試して:
select * from mytable where convert(varchar, mycolumn) = ''
私はあなたを助けたいと思います!
を使用isnull
する代わりにcase
、パフォーマンスのため、より良いケースです。
case when campo is null then '' else campo end
あなたの問題では、これを行う必要があります:
case when campo is null then '' else
case when len(campo) = 0 then '' else campo en
end
このようなコード:
create table #tabla(
id int,
campo varchar(10)
)
insert into #tabla
values(1,null)
insert into #tabla
values(2,'')
insert into #tabla
values(3,null)
insert into #tabla
values(4,'dato4')
insert into #tabla
values(5,'dato5')
select id, case when campo is null then 'DATA NULL' else
case when len(campo) = 0 then 'DATA EMPTY' else campo end
end
from #tabla
drop table #tabla
DECLARE @temp as nvarchar(20)
SET @temp = NULL
--SET @temp = ''
--SET @temp = 'Test'
SELECT IIF(ISNULL(@temp,'')='','[Empty]',@temp)