我有一個nvarchar列,我需要在字符串中的固定點插入一個連字符。連字符需要的最右邊的字符而下,又在第三的位置從右邊之間,例如在去: 列值插入字符到SQL字符串
0000050704
,我需要它是
0000050-70-4
或值是
0555256321
並且它應該是
0555256-32-1
看不到這是如何完成的。任何人都可以給我一點幫助嗎?
我有一個nvarchar列,我需要在字符串中的固定點插入一個連字符。連字符需要的最右邊的字符而下,又在第三的位置從右邊之間,例如在去: 列值插入字符到SQL字符串
0000050704
,我需要它是
0000050-70-4
或值是
0555256321
並且它應該是
0555256-32-1
看不到這是如何完成的。任何人都可以給我一點幫助嗎?
假設字符串的長度可變,則需要在表達式中使用REVERSE()或許多令人討厭的LEN()值。
declare @txt varchar(100) = '0000050704'
--If using SQL Server, the STUFF() function is your friend
select REVERSE(STUFF(STUFF(REVERSE(@txt), 2, 0, '-'), 5, 0, '-'))
--if not you'll need to concatenate SUBSTRING()s
select REVERSE(SUBSTRING(REVERSE(@txt), 1, 1) + '-' + SUBSTRING(REVERSE(@txt),2, 2) + '-' + SUBSTRING(REVERSE(@txt),4, LEN(@txt)))
這取決於你的SQL服務器。請檢查有關如何操作字符串的文檔 - 我將假設SUBSTRING函數。
在MS SQL Server中,你可以做某事。像這樣:
UPDATE YourTableName SET
YourFieldName =
SUBSTRING(YourFieldName, 1,7) + "-" +
SUBSTRING(YourFieldName, 7,2) + "-" +
SUBSTRING(YourFieldName, 9,1)
這三個部分分割你的字段內容,並與隔板重建它...
運行查詢,我會建議你嘗試,因爲普通的SELECT,看它是否可以作爲前需要:
SELECT
SUBSTRING(YourFieldName, 1,7) + "-" +
SUBSTRING(YourFieldName, 7,2) + "-" +
SUBSTRING(YourFieldName, 9,1)
FROM YourTableName
請注意查詢沒有WHERE條件,因此會影響表的所有行。
你可以用這個簡單的函數:
CREATE FUNCTION [dbo].[SetHyphen] (@S varchar(50)) RETURNS varchar(52)
BEGIN
RETURN STUFF(STUFF(@S,LEN(@S)-2,0,'-'),LEN(@S)+1,0,'-')
END
例如:
select [dbo].[SetHyphen]('0000050704')
0000050-70-4
哪個數據庫? – davek
如果是SQL Server,則爲此設置'STUFF()'... – JNK