忙表上的循環將不太可能充分執行。使用REVERSE和PATINDEX找到第一個非數字,在那裏開始一個SUBSTRING,然後反轉結果。這會很慢,沒有循環。
你的例子暗示你也不想匹配空格。
DECLARE @t TABLE (s NVARCHAR(500))
INSERT INTO @t (s)
VALUES
('Hi there how are you'),('What is the #1 pizza place in NYC?'),('Dominoes is number 1'),('Blah blah 123123'),('More blah 12321 123123 123132')
select s
, reverse(s) as beginning
, patindex('%[^0-9 ]%',reverse(s)) as progress
, substring(reverse(s),patindex('%[^0-9 ]%',reverse(s)), 1+len(s)-patindex('%[^0-9 ]%',reverse(s))) as [more progress]
, reverse(substring(reverse(s),patindex('%[^0-9 ]%',reverse(s)), 1+len(s)-patindex('%[^0-9 ]%',reverse(s)))) as SOLUTION
from @t
最終答案: 反向(子(反向(@s),PATINDEX( '%[^ 0-9]%',反向(@s)),1 + LEN(@s) - PATINDEX ('%[^ 0-9]%',反向(@s))))
我工作的東西多一點效率比在兩步PROC概述ess,給我幾分鐘。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-02-10 02:28:02
@zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz - 我等着憋氣。 :) – RPM1984 2012-02-10 02:29:12
讓我知道你的想法。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-02-10 03:07:38