如何解决从字符串中提取整数以转换为Int
我正在寻找有关编写脚本的帮助,该脚本将从字符串中的“-”后面提取数字,以便可以在SQL Server中将其仅转换为整数。
我的varchar列如下:
reference_id |reference
R6165522 |R6165522-1
B4587998 |B4587998-20
我已经尝试过以下脚本,但出现转换错误:
将varchar值'R6165522-1'转换为数据类型int时转换失败。
似乎right
应该添加到某处以便获得正确的字符。
SELECT reference
FROM this_table
WHERE reference_id = 'R6165522'
ORDER BY 1,CAST(replace([reference],'-','') AS int);
解决方法
这是一种方法:
SELECT reference
FROM this_table
WHERE reference_id = 'R6165522'
ORDER BY cast(SUBSTRING([reference],CHARINDEX('-',[reference]) + 1,LEN([reference])) as int);
,
如果reference
始终由reference_id
+ '-'
+一个数字组成,则可以替换开头部分:
SELECT reference
FROM this_table
WHERE reference_id = 'R6165522'
ORDER BY CAST(REPLACE(reference,reference_id + '-','') AS int);
请参见demo。
,即使从技术上讲,您想在-
之前替换任何内容,但您正在寻找的功能是STUFF
:
SELECT [reference]
FROM this_table
WHERE reference_id = 'R6165522'
ORDER BY CAST(STUFF([reference],1,[reference]),'') AS int);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。