我有一个 nvarchar 列,我需要在字符串中的固定点插入一个连字符。连字符需要在最右边的字符和下一个字符之间,并再次从右边数第三个位置,例如:column value is
0000050704
我需要它
0000050-70-4
或值为
0555256321
它应该是
0555256-32-1
看不到这是怎么做到的。谁能给我一点帮助?
我有一个 nvarchar 列,我需要在字符串中的固定点插入一个连字符。连字符需要在最右边的字符和下一个字符之间,并再次从右边数第三个位置,例如:column value is
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)))
您可以使用这个简单的功能:
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
这取决于您的 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 条件,因此会影响表的所有行。