我有字串(nvarchar)格式的列日期。我有這樣不一致的專欄

我有更多這樣的例子
2021-7-01
2021-8-01
首先我嘗試過 CASE WHEN 這樣
SELECT
CASE
WHEN DATE_IN LIKE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
THEN CONVERT(datetime, date_in, 102)
WHEN date_in LIKE '[0-9]{4}-[0-9]{2}-[0-9]{2}'
THEN CONVERT(datetime, date_in) END AS DATE_IN, EMP_NAME,DATE_IN
FROM staging.irisEtcSingleFile
但是,輸出為 NULL .. 我希望輸出是這樣的
2021-01-01
2021-07-01
2021-08-01
我真的很感激得到答案..謝謝
uj5u.com熱心網友回復:
試試這個片段,產生一個很好的反應:
create table #t (txt varchar(100))
delete from #t
go
insert into #t select '2021-7-01'
insert into #t select '2021-8-01'
insert into #t select '2021-01-01'
insert into #t select '2021-07-01'
insert into #t select '2021-2-02'
insert into #t select '2021-08-01'
go
select
txt
from
#t
where
txt not like '%[^0-9-]%' and
len(replace(txt, '-', '')) = len(txt)-2 and
txt like '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
輸出:
2021-01-01
2021-07-01
2021-08-01
uj5u.com熱心網友回復:
使用檢查此查詢
復制
SELECT
CASE
WHEN test_col LIKE REPLICATE('[0-9]',4) '-[0-9]-' REPLICATE('[0-9]',2)
THEN CONVERT(datetime, test_col, 102)
WHEN test_col LIKE REPLICATE('[0-9]',4) '-' REPLICATE('[0-9]',2) '-' REPLICATE('[0-9]',2)
THEN CONVERT(datetime, test_col) END AS test_col
FROM test
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/395679.html
標籤:sql sql-server
上一篇:視窗函式累積聚合
