RPM*_*984 7 t-sql string sql-server-2008
样本输入:
"嘿,你好吗"
"纽约市排名第一的披萨店是什么?"
"多米诺骨牌排名第一"
"Blah blah 123123"
"更多blah 12321 123123 123132"
预期产量:
"嘿,你好吗"
"纽约市排名第一的披萨店是什么?"
"多米诺骨牌就是数字"
"Blah blah"
"更多等等"
我认为这是一个两步过程:
我应该得到理想的结果.
我可以想到一些快速而肮脏的方法,但这需要执行得相当好,因为它是一个在繁忙的桌子上运行的触发器,所以我想把它扔给T-SQL专业人员.
有什么建议?
这个解决方案应该更有效一点,因为它首先检查字符串是否包含数字,然后检查字符串是否以数字结尾。
CREATE FUNCTION dbo.trim_ending_numbers(@columnvalue AS VARCHAR(100)) RETURNS VARCHAR(100)
BEGIN
--This will make the query more efficient by first checking to see if it contains any numbers at all
IF @columnvalue NOT LIKE '%[0-9]%'
RETURN @columnvalue
DECLARE @counter INT
SET @counter = LEN(@columnvalue)
IF ISNUMERIC(SUBSTRING(@columnvalue,@counter,1)) = 0
RETURN @columnvalue
WHILE ISNUMERIC(SUBSTRING(@columnvalue,@counter,1)) = 1 OR SUBSTRING(@columnvalue,@counter,1) = ' '
BEGIN
SET @counter = @counter -1
IF @counter < 0
BREAK
END
SET @columnvalue = SUBSTRING(@columnvalue,0,@counter+1)
RETURN @columnvalue
END
Run Code Online (Sandbox Code Playgroud)
如果你跑
SELECT dbo.trim_ending_numbers('More blah 12321 123123 123132')
Run Code Online (Sandbox Code Playgroud)
它会回来
'More blah'
Run Code Online (Sandbox Code Playgroud)