我在表中有一個名爲Address的列。 我有值,如如何在SQL Server 2005中分割一個句子
12-15 Hardley Street
2A-C Hardley Street
A-2c Hardley Street
A-B Hardley Street
我需要保持連字符( - ),完整的前三行。
即如果包含連字符( - )的單詞中有一個數字,我應該保留它,否則我應該用空格替換。
所以列應更換如下
12-15 Hardley Street
2A-C Hardley Street
A-2c Hardley Street
A B Hardley Street
我小的大腦無法理解這一點。 任何幫助請。
p.s:我還想補充一點,第一個單詞不需要包含連字符。
的數據可以作爲
Hardley Street 2A-C
或
2A-C
感謝一個和所有的回覆和評論。
還有一個先決條件,我應該在更新查詢中完成。
declare @data nvarchar(200)
set @data='12-12 ORANGE-RED'
select @data=
case left(@data,charindex(' ',@data))
when '' then
CASE PATINDEX ('%[0-9]%',@data)
when 0 then replace(@data,'-',' ')
else @data
END
else
CASE PATINDEX ('%[0-9]%',left(@data,charindex(' ',@data)))
when 0 then replace(left(@data,charindex(' ',@data)),'-',' ')+'-- LEFT MOST WORD REPLACE'
else
CASE charindex (' ',substring(@data,charindex(' ',@data)+1,len(@data)))
WHEN 0 THEN
CASE PATINDEX ('%[0-9]%',substring(@data,charindex(' ',@data)+1,len(@data)))
when 0 then left(@data,charindex(' ',@data))+ replace(substring(@data,charindex(' ',@data)+1,len(@data)),'-',' ') +'--RIGHT MOST REPLACE'
else @data + '--struggling here'
END
END
END
end
where @data like '%-%'
select @data
我已經嘗試了上述 我將更新表作爲
update tblname set @columnName=
--lines of coding
where @columnName like '%-%'
我不能夠解決這個問題,並將其添加到我的困境,數據會不一致。
我假設的數據是兩個詞,如
2A-C Hardley Street
A-2c Hardley Street
A B Hardley Street
但客戶說,他將有數據爲
Hardley Street 22-23 BO'NESS
A-2c Hardley Street
Hardley Street 12B Stratford-upon-avon
我不能創建一個功能,原因是我們將更新表格並對其進行格式化。 如果我創建一個函數,我應該爲每隔一行調用它,這非常耗時。
請不要暗示SSIS,因爲這已被排除。
任何想法都會非常有幫助。
如果您發佈的代碼或數據樣本或XML,** **請在高亮文本編輯器的線,然後點擊「代碼」按鈕(101 010)在編輯器工具欄上進行恰當的格式化和語法突出顯示! – 2010-10-19 16:27:57
我不明白這個問題。 – Brad 2010-10-19 16:28:46
下次當您發佈問題時,請儘可能詳細。您不斷添加先決條件和限制。使用函數來完成這項工作並不像您想象的那樣徵稅,但當然您並未指定表格的大小。如果你的桌子很大,我建議你查看PAF-ing和地址格式,有專門研究這個的公司(我不會在這裏發佈名字,那將是廣告)。 – 2010-10-21 08:42:49