小编uns*_*138的帖子

从具有多个分隔符和位置的字符串中提取街道地址

试图从这些数据中提取街道地址:

CREATE TABLE foo(Places varchar(50));
INSERT foo(Places) VALUES
('MARKET @123 NORTH RD'),
('HARDWARE @600 Main RD ;W1'),
('MAIN AV / NORTH RD'),
('500 NORTH RD @LIBRARY'),
('500 ANYSTREET ; *** SIDEWALK****'),
('MARKET @123 NORTH RD'),
('700 ANYSTREET'),
('(088.12345,088.12345) ;75 SOUTH RD');
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用 CASE、SUBSTRING 和 (CHAR/PAT)INDEX ......但我只是没有正确地做到这一点。

Select 
[Address] = CASE WHEN PATINDEX('%@[0-9]%' , Places) = 0 THEN     (SUBSTRING(Places, 0, CHARINDEX('@',Places)))
                WHEN PATINDEX('%@[a-z]%' , Places) = 0 THEN     (SUBSTRING(Places, CHARINDEX('@',Places) + 1, LEN(Places)))
                WHEN PATINDEX('%;[0-9]%' , Places) = 0 THEN (SUBSTRING(Places, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server string-manipulation

5
推荐指数
1
解决办法
2198
查看次数