SQL Server 2005를 사용하고 있습니다. 텍스트 열이있는 테이블이 있고이 열의 값이 null이 아니지만 비어있는 테이블에 많은 행이 있습니다. ''와 비교하려고하면 다음과 같은 응답이 나타납니다.
text 및 varchar 데이터 형식이 연산자와 같지 않습니다.
텍스트 열의 값이 null이 아니고 비어 있는지 확인하는 특수 함수가 있습니까?
SQL Server 2005를 사용하고 있습니다. 텍스트 열이있는 테이블이 있고이 열의 값이 null이 아니지만 비어있는 테이블에 많은 행이 있습니다. ''와 비교하려고하면 다음과 같은 응답이 나타납니다.
text 및 varchar 데이터 형식이 연산자와 같지 않습니다.
텍스트 열의 값이 null이 아니고 비어 있는지 확인하는 특수 함수가 있습니까?
답변:
실제로는 LIKE 연산자 만 사용해야합니다.
SELECT * FROM mytable WHERE mytextfield LIKE ''
빈 값만 얻으려면 (널 값은 아님) :
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
이 문제에 대한 대안으로 많은 답변이 있다는 것을 알고 있지만 @Eric Z Beard & @Tim Cooper가 @Enrique Garcia & @Uli Köhler와 함께 최고의 솔루션으로 찾은 것을 정리하고 싶습니다.
아래 쿼리는 0이 아닌 1을 반환하므로 유스 케이스 시나리오에서 공간 전용이 비어있는 것과 동일하다는 사실을 처리 해야하는 경우.
SELECT datalength(' ')
따라서 나는 다음과 같이 갈 것이다.
SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))
이 시도:
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)