我正在尝试通过删除以空格开头的所有内容来格式化表中的许可证枚举列,并且我还想删除许可证枚举列中从“-”之后开始的任何字符,包括“-”
例如:
Licenseenum GA 350-0 中的当前数据
我想要得到 350
这是我的代码
select Licenseenum, SUBSTRING (Licenseenum, 4, LEN(Licenseenum)-1)
from licensee
这个结果 350-0
如何从结果中删除 -0?
感谢您的帮助
最佳答案
试试这样
DECLARE @YourString VARCHAR(100)='GA 350-0';
SELECT SUBSTRING(@YourString,CHARINDEX(' ',@YourString,1),CHARINDEX('-',@YourString,1)-CHARINDEX(' ',@YourString,1));
更新 1
这完全一样,但更好读
DECLARE @YourString VARCHAR(100)='GA 350-0';
WITH Positions AS
(
SELECT CHARINDEX(' ',@YourString,1) AS posBlank
,CHARINDEX('-',@YourString,1) AS posMinus
)
SELECT SUBSTRING(@YourString,posBlank,posMinus-posBlank)
FROM Positions;
更新2避免前导空白...
我的逻辑需要进行一些小修正才能删除数字之前的空白:
SELECT SUBSTRING(@YourString,posBlank+1,posMinus-posBlank-1)
与第一个示例相同...
关于sql-server-2008 - SQL 服务器修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37424396/