it-source

SQL Server를 사용하여 빈 공간을 null 값으로 변환하는 방법은 무엇입니까?

criticalcode 2023. 7. 20. 21:58
반응형

SQL Server를 사용하여 빈 공간을 null 값으로 변환하는 방법은 무엇입니까?

테이블이 있는데 이 테이블의 열에 일부 레코드를 위한 빈 공간이 있습니다.이제 데이터를 다른 테이블로 이동하고 빈 공간을 다음으로 대체해야 합니다.NULL가치.

사용하려고 했습니다.

REPLACE(ltrim(rtrim(col1)),' ',NULL)

하지만 효과가 없습니다.모든 값을 변환합니다.col1로.NULL빈 공간이 있는 값만 다음으로 변환합니다.NULL.

저는 비슷한 문제를 해결했습니다.NULLIF함수:

UPDATE table 
SET col1 = NULLIF(col1, '')

T-SQL 참조:

NULLIF는 두 식이 동일하지 않으면 첫 번째 식을 반환합니다.식이 같은 경우 NULLIF는 첫 번째 식 유형의 null 값을 반환합니다.

이거 먹어봤어요?

UPDATE table 
SET col1 = NULL 
WHERE col1 = ''

해설자들이 지적한 것처럼, 당신은 할 필요가 없습니다.ltrim()또는rtrim(),그리고.NULL열이 일치하지 않음''.

SQL Server는 문자열을 비교할 때 뒤에 오는 공백을 무시하므로 ' = ' '다음 쿼리를 사용하여 업데이트하십시오.

UPDATE table
SET col1 = NULL
WHERE col1 = ''

테이블의 NULL 값은 NULL로 유지되고 공백 문자만 있는 col1은 NULL로 변경됩니다.

한 테이블에서 다른 테이블로 복사하는 동안 이 작업을 수행하려면 다음을 사용합니다.

INSERT INTO newtable ( col1, othercolumn )
SELECT
   NULLIF(col1, ''),
   othercolumn
FROM table

이 코드는 데이터베이스의 모든 테이블과 열에서 이를 달성할 수 있는 몇 가지 SQL을 생성합니다.

SELECT
   'UPDATE ['+T.TABLE_SCHEMA+'].[' + T.TABLE_NAME + '] SET [' + COLUMN_NAME + '] = NULL 
   WHERE [' + COLUMN_NAME + '] = '''''
FROM 
    INFORMATION_SCHEMA.columns C
INNER JOIN
    INFORMATION_SCHEMA.TABLES T ON C.TABLE_NAME=T.TABLE_NAME AND C.TABLE_SCHEMA=T.TABLE_SCHEMA
WHERE 
    DATA_TYPE IN ('char','nchar','varchar','nvarchar')
AND C.IS_NULLABLE='YES'
AND T.TABLE_TYPE='BASE TABLE'

원본 테이블에서 선택할 때는 사례 설명을 사용해야 합니다.

CASE
  WHEN col1 = ' ' THEN NULL
  ELSE col1
END col1

또한 LTRIM 및 RTRIM은 공백(')에서 공백(')으로 값을 줄입니다.공백을 제거해야 하는 경우에는 사례 문장을 적절하게 수정해야 합니다.

CASE
  WHEN LTRIM(RTRIM(col1)) = '' THEN NULL
  ELSE LTRIM(RTRIM(col1))
END col1

이런 거?

UPDATE [MyTable]
SET [SomeField] = NULL
WHERE [SomeField] is not NULL
AND LEN(LTRIM(RTRIM([SomeField]))) = 0

여기 당신을 위한 정규식입니다.

update table
set col1=null
where col1 not like '%[a-z,0-9]%'

기본적으로 문자나 숫자가 들어 있지 않은 열을 찾아서 null로 설정합니다. 특수 문자만 포함된 열이 있는 경우 업데이트해야 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3701812/how-to-convert-empty-spaces-into-null-values-using-sql-server

반응형