如何在 T-SQL 中每隔 X 个字符在长信用卡号中插入空格?
How to insert Spaces in long Credit Card Number every X characters in T-SQL?
我好像有点失误...
如何将连续的信用卡号格式化为T-SQL中每4位数字后有空白space?
TableName | Cards |
ColumnName | CardNumber |
ExampleInput | 80756201005803400471 | varchar(20)
ExampleOutput | 8075 6201 0058 0340 0471 | varchar(25)
我希望在 SELECT
语句中包含 ExampleOutput
,性能无关紧要。
像这样:
select stuff(stuff(stuff(stuff(ccn, 17, 0, ' '), 13, 0, ' '), 9, 0, ' '), 5, 0, ' ')
即嵌套调用到stuff()
。注意:您需要从字符串的末尾开始,否则要非常小心偏移量。
如果长度是固定的,就像这样:
Select *
, SUBSTRING(n, 1, 4) + ' '
+ SUBSTRING(n, 5, 4) + ' '
+ SUBSTRING(n, 9, 4) + ' '
+ SUBSTRING(n, 13, 4) + ' '
+ SUBSTRING(n, 17, 4) + ' '
From (values('80756201005803400471')) as car(n)
只是使用 LEFT
和 SUBSTRING
的另一个视角。
查询
declare @num as varchar(50)
set @num = '80756201005803400471'
select left(@num,4)
+ ' '
+ substring(@num,5,4)
+ ' '
+ substring(@num,9,4)
+ ' '
+substring(@num,13,4)
+ ' '
+substring(@num,17,4);
并且还可以使用 RIGHT
函数代替最后一个 SUBSTRING
。
查询
declare @num as varchar(50)
set @num = '80756201005803400471'
select left(@num,4)
+ ' '
+ substring(@num,5,4)
+ ' '
+ substring(@num,9,4)
+ ' '
+substring(@num,13,4)
+ ' '
+right(@num,4);
我好像有点失误...
如何将连续的信用卡号格式化为T-SQL中每4位数字后有空白space?
TableName | Cards |
ColumnName | CardNumber |
ExampleInput | 80756201005803400471 | varchar(20)
ExampleOutput | 8075 6201 0058 0340 0471 | varchar(25)
我希望在 SELECT
语句中包含 ExampleOutput
,性能无关紧要。
像这样:
select stuff(stuff(stuff(stuff(ccn, 17, 0, ' '), 13, 0, ' '), 9, 0, ' '), 5, 0, ' ')
即嵌套调用到stuff()
。注意:您需要从字符串的末尾开始,否则要非常小心偏移量。
如果长度是固定的,就像这样:
Select *
, SUBSTRING(n, 1, 4) + ' '
+ SUBSTRING(n, 5, 4) + ' '
+ SUBSTRING(n, 9, 4) + ' '
+ SUBSTRING(n, 13, 4) + ' '
+ SUBSTRING(n, 17, 4) + ' '
From (values('80756201005803400471')) as car(n)
只是使用 LEFT
和 SUBSTRING
的另一个视角。
查询
declare @num as varchar(50)
set @num = '80756201005803400471'
select left(@num,4)
+ ' '
+ substring(@num,5,4)
+ ' '
+ substring(@num,9,4)
+ ' '
+substring(@num,13,4)
+ ' '
+substring(@num,17,4);
并且还可以使用 RIGHT
函数代替最后一个 SUBSTRING
。
查询
declare @num as varchar(50)
set @num = '80756201005803400471'
select left(@num,4)
+ ' '
+ substring(@num,5,4)
+ ' '
+ substring(@num,9,4)
+ ' '
+substring(@num,13,4)
+ ' '
+right(@num,4);