2017-05-30 23 views
-2

如何在SQL Server中實現以下內容?在SQL Server中只連接右側連字符

的數據是這樣的:

Filename  Yes/No  Key 
Abidabo  Yes  92873-987dsfkj80-2002-04-11 
Bibiboo  No   20392-208kj48384-2008-01-04 

希望它看起來是這樣的:

Filename  Yes/No  Key 
Abidabo  Yes  92873-987dsfkj80-20020411 
Bibiboo  No   20392-208kj48384-20080104 

這樣的連字符會消失,只爲最終日期。

+0

人有[已ansered(https://stackoverflow.com/questions/44257621/how-to-take-apart-結束信息之間的連字符在SQL服務器)這個問題,並解釋說,你不應該使用這樣的模式。你剛剛找到另一個原因。 –

+0

爲什麼你不使用三個單獨的領域?如果您要用每個SELECT解析值,爲什麼不一勞永逸地解決問題? –

+4

[如何在SQL Server連字符之間拆分信息](https://stackoverflow.com/questions/44257621/how-to-take-apart-information-between-hyphens-in-sql-server) – Jayvee

回答

0

使用組合LEFT,RIGHTREPLACE字符串函數。

查詢

select *, 
left([key], len([key]) - 10) + replace(right([key], 10), '-', '') 
from your_table_name; 

你可以用它爲update聲明爲好。

Find a demo here

update [tblFiles] 
set [key] = left([key], len([key]) - 10) + replace(right([key], 10), '-', '') 
from [your_table_name]; 

而且所有key列的值應該是相同的方式。
我的意思是,應該.........yyyy-mm-dd

0
;With cte([Filename],[Yes/No],[Key]) 
AS 
(
SELECT 'Abidabo','Yes' ,'92873-987dsfkj80-2002-04-11' UNION ALL 
SELECT 'Bibiboo','No' ,'20392-208kj48384-2008-01-04' 
) 
SELECT [Filename] 
    ,[Yes/No] 
    ,CONCAT(SUBSTRING([Key],0,LEN([Key])-9) 
    ,REPLACE(SUBSTRING([Key], LEN(SUBSTRING([Key], 0, LEN([Key]) - 8)), LEN([Key])), '-', '')) AS ExpectedKey 
FROM cte 

輸出

Filename  Yes/No  Key 
------------------------------------------------- 
Abidabo  Yes  92873-987dsfkj80-20020411 
Bibiboo  No   20392-208kj48384-20080104