it-source

SQL 서버를 사용하여 문자열을 잘라내는 방법

criticalcode 2023. 4. 16. 15:14
반응형

SQL 서버를 사용하여 문자열을 잘라내는 방법

SQL Server에 큰 문자열이 있습니다.나는 그 문자열을 10자 또는 15자로 잘라내고 싶다.

원본 문자열

this is test string. this is test string. this is test string. this is test string.

원하는 문자열

this is test string. this is ......

긴 문자열의 몇 글자만 반환하는 경우 다음을 사용할 수 있습니다.

select 
  left(col, 15) + '...' col
from yourtable

SQL Fidle with Demo를 참조하십시오.

이렇게 하면 문자열의 처음 15자가 반환되고 그 후 연결된다....끝까지.

15보다 작은 문자열보다 작은 문자열이 없는지 확인하는 경우...다음 항목을 사용할 수 있습니다.

select 
  case 
    when len(col)>15
    then left(col, 15) + '...' 
    else col end col
from yourtable

SQL Fidle with 데모 참조

사용할 수 있습니다.

LEFT(column, length)

또는

SUBSTRING(column, start index, length)

Cast() 연산도 사용할 수 있습니다.

 Declare @name varchar(100);
set @name='....';
Select Cast(@name as varchar(10)) as new_name

이 답변은 좋다고 생각합니다만, 시나리오를 추가하고 싶습니다.

몇 번인가 스트링의 앞부분에서 일정량의 글자를 떼고 싶었지만 길이는 신경 쓰지 않았다.RIGHT() 및 SUBSTRING()에는 여러 가지 방법이 있지만 모두 속도가 느려질 수 있는 문자열 길이를 알아야 합니다.

대신 STUP() 함수를 사용합니다.

SET @Result = STUFF(@Result, 1, @LengthToRemove, '')

이로 인해 불필요한 문자열의 길이가 빈 문자열로 대체됩니다.

아래도 사용할 수 있습니다.iif는 대소문자를 회피하고 필요한 경우에만 줄임표를 추가합니다(SQL Server 2012 이후에서만 유효합니다). 대소문자는 ANSI에 준거합니다(단, 보다 상세합니다).

SELECT 
  col, LEN(col), 
  col2, LEN(col2), 
  col3, LEN(col3) FROM (
  SELECT 
    col, 
    LEFT(x.col, 15) + (IIF(len(x.col) > 15, '...', '')) AS col2, 
    LEFT(x.col, 15) + (CASE WHEN len(x.col) > 15 THEN '...' ELSE '' END) AS col3 
  from (
      select 'this is a long string. One that is longer than 15 characters' as col
      UNION 
      SELECT 'short string' AS col
      UNION 
      SELECT 'string==15 char' AS col
      UNION 
      SELECT NULL AS col
      UNION 
      SELECT '' AS col
) x
) y
     CASE
     WHEN col IS NULL
        THEN ''
     ELSE SUBSTRING(col,1,15)+ '...' 
     END AS Col

ReferenceURL : https://stackoverflow.com/questions/15142356/how-to-truncate-string-using-sql-server

반응형