Sql server 2005 从SQL变量末尾修剪数字
我有一个名为Sql server 2005 从SQL变量末尾修剪数字,sql-server-2005,tsql,trim,Sql Server 2005,Tsql,Trim,我有一个名为@FileName的SQL变量,我需要从末尾修剪数字。下面是我的字符串目前的外观示例,以及我需要它们的外观示例: lorem-1至lorem 乱数假文> Fo-123-BAR-1234 Foo123-Bar (注释< /强>:中间保留数) 123-lorem至123-lorem(注意:无数字和结尾处的“-”无变化) 这可能吗 谢谢。是的,有可能。请看一下子字符串和ASCII TSQL函数。是的,这是可能的。请看一下子字符串和ASCII TSQL函数。可以使用PATINDEX和
@FileName
的SQL变量,我需要从末尾修剪数字。下面是我的字符串目前的外观示例,以及我需要它们的外观示例:
lorem-1
至lorem
乱数假文>
<代码> Fo-123-BAR-1234 <代码> Foo123-Bar (<强>注释< /强>:中间保留数)
123-lorem
至123-lorem
(注意:无数字和结尾处的“-”无变化)
这可能吗
谢谢。是的,有可能。请看一下子字符串和ASCII TSQL函数。是的,这是可能的。请看一下子字符串和ASCII TSQL函数。可以使用
PATINDEX
和REVERSE
。试试这个:
SELECT LEFT(@FileName,LEN(@FileName)-patindex('%[^0-9]%',REVERSE(@FileName))+1)
可以使用
PATINDEX
和REVERSE
。试试这个:
SELECT LEFT(@FileName,LEN(@FileName)-patindex('%[^0-9]%',REVERSE(@FileName))+1)
我知道SUBSTRING函数,并且在过去多次使用过它。然而,我如何知道我想要的子字符串的长度呢?一种方法是使用子字符串以相反的顺序逐个查看字符。遇到数字时,跳过它们。ASCII可用于确定字符是否为数字,代码比大小写或if语句少一点。不过PATINDEX看起来是个更好的选择。我知道SUBSTRING函数,并且在过去多次使用过它。然而,我如何知道我想要的子字符串的长度呢?一种方法是使用子字符串以相反的顺序逐个查看字符。遇到数字时,跳过它们。ASCII可用于确定字符是否为数字,代码比大小写或if语句少一点。帕丁德斯看起来是个更好的选择。干杯!然而,当我输入'test-123'时,它返回'test-'。是否有返回“test”的方法?好的,为了实现这一点,您需要在PATINDEX中添加所有要跳过的字符。例如,要去掉最后一个数字和前面的“-”,需要在PATINDEX的第一个参数中添加“-”。在这种情况下,应该是这样一句话:选择LEFT(@FileName,LEN(@FileName)-patindex(“%[^0-9-]%”),REVERSE(@FileName))+1)为此干杯!然而,当我输入'test-123'时,它返回'test-'。是否有返回“test”的方法?好的,为了实现这一点,您需要在PATINDEX中添加所有要跳过的字符。例如,要去掉最后一个数字和前面的“-”,需要在PATINDEX的第一个参数中添加“-”。在这种情况下,应该是这样一句话:选择LEFT(@FileName,LEN(@FileName)-patindex(“%[^0-9-]%”,REVERSE(@FileName))+1)