sql-server-2008 - SQL 服务器修剪

标签 sql-server-2008 t-sql

我正在尝试通过删除以空格开头的所有内容来格式化表中的许可证枚举列,并且我还想删除许可证枚举列中从“-”之后开始的任何字符,包括“-”

例如:
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/

相关文章:

sql - 如何为每个用户获取具有最小值和最大值的唯一记录

database - 在 SQL Server 中存储图像

c# - LINQ Count 和 Max 一起使用

t-sql - SQL 按时间间隔对数据进行分组

sql - 对 Itzik Ben-Gan 在他的 SQL Server 2005 书和 SQL Server 2008 书中的逻辑查询处理顺序感到困惑

sql - 在 SQL Server 中计算排除周末(周一至周五)的天数

sql - SQL合并中发生无意的交叉连接

sql-server - SQL Server 如何在不执行 >> 的情况下连接多个 ID 导致 SUM 从执行到执行的变化

c# - 应用程序中包含的数据库

sql - 为什么 Clng 在这些场景中的工作方式不同,并且可以在 SQL Server 中重现吗? (不是银行家四舍五入)