Select 'long' 数据类型,使用 Substring 或 Right/Left 格式化输出
Select 'long' data type with formatted output using Substring or Right/Left
我的 select 语句 returns 不能用作子字符串表达式的长值列表。
我的查询返回的值是 9 或 10 位数字长。如果它是 9 位数字长例如 123456789 我想要结果像 0-123-456-789 否则如果是 3123456789 这样的 10 位数字我想要它作为 3-123-456-789.
是否有像'right'或'left'这样的函数可以类似于子字符串使用 即有 3 个参数,我可以在其中提及起点。
只需指出正确的方向,例如函数名称或在 select 语句中使用格式化函数的正确方法。
使用 Stuff
and Right
字符串函数来执行此操作。
DECLARE @digits Bigint=3123456789
SELECT Stuff(Stuff(Stuff(RIGHT('0'+ convert(varchar(10),@digits),10),2,0, '-'),6,0, '-'),10,0,'-')
结果: 3-123-456-789
重要提示:格式化应该留给您的表示层,而不是您的数据库。
话虽这么说,如果您决定格式化这些值,那么您将必须先将它们转换为字符串!
SELECT your_field As original_value
, Cast(your_field As varchar(10)) As stringified
, '0000000000' + Cast(your_field As varchar(10)) As pad_with_zeroes
, Right('0000000000' + Cast(your_field As varchar(10)), 10) As trim_to_ten_characters
FROM your_table
您的格式设置变得简单:
SELECT original_value
, trim_to_ten_characters
, SubString(trim_to_ten_characters, 1, 1)
+ '-'
, SubString(trim_to_ten_characters, 2, 3)
+ '-'
, SubString(trim_to_ten_characters, 5, 2)
+ '-'
, SubString(trim_to_ten_characters, 8, 3) As formatified
, Stuff(Stuff(Stuff(trim_to_ten_characters, 8, 0, '-'), 5, 0, '-'), 2, 0, '-') As alternative_method
FROM (
<that query from above>
) As aliased_query
我的 select 语句 returns 不能用作子字符串表达式的长值列表。 我的查询返回的值是 9 或 10 位数字长。如果它是 9 位数字长例如 123456789 我想要结果像 0-123-456-789 否则如果是 3123456789 这样的 10 位数字我想要它作为 3-123-456-789.
是否有像'right'或'left'这样的函数可以类似于子字符串使用 即有 3 个参数,我可以在其中提及起点。
只需指出正确的方向,例如函数名称或在 select 语句中使用格式化函数的正确方法。
使用 Stuff
and Right
字符串函数来执行此操作。
DECLARE @digits Bigint=3123456789
SELECT Stuff(Stuff(Stuff(RIGHT('0'+ convert(varchar(10),@digits),10),2,0, '-'),6,0, '-'),10,0,'-')
结果: 3-123-456-789
重要提示:格式化应该留给您的表示层,而不是您的数据库。
话虽这么说,如果您决定格式化这些值,那么您将必须先将它们转换为字符串!
SELECT your_field As original_value
, Cast(your_field As varchar(10)) As stringified
, '0000000000' + Cast(your_field As varchar(10)) As pad_with_zeroes
, Right('0000000000' + Cast(your_field As varchar(10)), 10) As trim_to_ten_characters
FROM your_table
您的格式设置变得简单:
SELECT original_value
, trim_to_ten_characters
, SubString(trim_to_ten_characters, 1, 1)
+ '-'
, SubString(trim_to_ten_characters, 2, 3)
+ '-'
, SubString(trim_to_ten_characters, 5, 2)
+ '-'
, SubString(trim_to_ten_characters, 8, 3) As formatified
, Stuff(Stuff(Stuff(trim_to_ten_characters, 8, 0, '-'), 5, 0, '-'), 2, 0, '-') As alternative_method
FROM (
<that query from above>
) As aliased_query