MSSQL 사용 하고 있습니다.
NVARCHAR로 선언된 컬럼에서 문자는 제거 하고 숫자만 가져오고 싶은데
한큐에 해결 할 수 있는 방법이 잇을까요...
01AA
02MM
03SS
04AD
01MM02AA
02SSMM01AA02AD
데이터가 이런식으로 들어가 있어서 REPLACE로 하나씩 제거 하기엔 너무 번거로울 것 같고..
끝에 두자리만 잘라내기엔 중간에 영문이 들어가 있는 경우도 있어서 잘 안되네요ㅠㅠ
01
0203
04
0102
020102
이런식으로 가져오고 싶습니다!
추가...
하이픈이 있는경우 하이픈은 유지되어야 합니다
01-03MM
01-03 으로 변환 할수있을까요?
WITH t AS
(
SELECT '01AA' v
UNION ALL SELECT '02MM'
UNION ALL SELECT '03SS'
UNION ALL SELECT '04AD'
UNION ALL SELECT '01MM02AA'
UNION ALL SELECT '02SSMM01AA02AD'
UNION ALL SELECT '01-03MM'
)
SELECT v
, REPLACE(TRANSLATE(v, 'abcdefghijklmnopqrstuvwxyz', ' '), ' ', '') x
FROM t
;
정규식 이용하면, "\-" 만 추가하면 됩니다.
WITH T(val) AS (
SELECT '01AA'
UNION ALL SELECT '02M-M'
UNION ALL SELECT '03SS'
UNION ALL SELECT '04AD'
UNION ALL SELECT '01MM02AA'
UNION ALL SELECT '02SSMM01AA02AD'
)
SELECT
val,(
SELECT STUFF((
SELECT
'' + c
FROM (
SELECT
SUBSTRING(val, Number, 1) AS c
FROM
master.dbo.spt_values
WHERE
Type = 'P'
AND Number BETWEEN 1 AND LEN(val)
) AS digits
WHERE
c LIKE '[0-9\-]'
FOR XML PATH('')
), 1, 0, '')
) AS only_num
FROM T;