홍동이의 성장일기

[Advent of SQL 2024🎄] SQLite 특수문자 포함하지 않도록 하는 구문 본문

Tool/SQL 코딩테스트 풀이

[Advent of SQL 2024🎄] SQLite 특수문자 포함하지 않도록 하는 구문

홍동2 2024. 12. 16. 22:31

 

 

https://solvesql.com/collections/advent-of-sql-2024/

 

solvesql.com

 

 

SQLite에서 LIKE를 사용할 때, 언더스코어(_)는 기본적으로 단일 문자 와일드카드로 동작합니다.

따라서 NOT LIKE '%_%'는 "문자열의 일부가 단일 문자인 경우가 아니다"로 해석되며, 원하는 결과를 반환하지 않을 수 있습니다.

WHERE 컬럼명 NOT LIKE '%_%'

 

이를 해결하려면 언더스코어를 문자 그대로 처리하도록 ESCAPE 키워드를 사용하거나, 다른 함수(INSTR)를 사용해야 합니다.

 

WHERE 컬럼명 NOT LIKE '%\_%' ESCAPE '\'
  • ESCAPE '\': 백슬래시(\)를 이스케이프 문자로 지정합니다.
  • '%\_%': 언더스코어를 문자 그대로 처리합니다.

 

WHERE INSTR(컬럼명, '_') = 0
  • INSTR(컬럼명, '_'): 컬럼명 문자열에서 언더스코어가 포함된 위치를 반환합니다.
  • 값이 0이면 언더스코어가 없는 경우를 의미합니다.

 

WHERE REPLACE(컬럼명, '_', '') = 컬럼명
  • REPLACE( 컬럼명 , '_', ''): 컬럼명에서 모든 언더스코어를 제거합니다.
  • 제거 후의 문자열이 원래 문자열과 같으면 언더스코어가 없는 경우입니다.

 

 

다섯문제 풀고 침대로 ~🌛

728x90
Comments