使用替换更新 SQL Server 记录

问题描述 投票:0回答:1

我有很多地址记录,记录中显示地址前缀,然后是“SR”,然后是后缀。我想要做的是将“SR”替换为“State Route”,并保留前缀和后缀不变。我试过:

UPDATE sites
SET address = REPLACE(address, ' SR ', ' State Route ')

这会将整个列替换为“% State Route %”。我真的无法做到

left(nnnn)+' State Route' + right(nnnn)
,因为左右部分可能长度不同。

sql sql-server
1个回答
0
投票
CREATE TABLE Sites (
  address varchar(200) NOT NULL DEFAULT ''
)

INSERT INTO Sites (address)
VALUES 
('123 SR 45, Springfield, IL 62704'),
('789 E SR 89A, Sedona, AZ 86336'),
('101 SR 10A, Pensacola, FL 32503'),
('202 West SR 120, Elkhart, IN 46514'),
('303 N. SR 200, Starke, FL 32091'),
('404 SR 9 Southeast, Snohomish, WA 98296'),
('505 South SR 49, Mariposa, CA 95338'),
('606 SR 22 W, Circleville, OH 43113'),
('707 East SR 134, Wilmington, OH 45177')

SELECT 
  Address,
  REPLACE(Address, ' SR ', ' State Route ') AS AddressDisplay
FROM Sites
地址 地址显示
123 SR 45,斯普林菲尔德,IL 62704 123 State Route 45, 斯普林菲尔德, IL 62704
789 E SR 89A,塞多纳,AZ 86336 789 E State Route 89A,塞多纳,AZ 86336
101 SR 10A,彭萨科拉,FL 32503 101 State Route 10A,彭萨科拉,FL 32503
202 West SR 120, 埃尔克哈特, IN 46514 202 West State Route 120, 埃尔克哈特, IN 46514
303 N.SR 200,斯塔克,FL 32091 303 N. State Route 200,斯塔克,FL 32091
404 SR 9 东南,斯诺霍米什,WA 98296 404 号国道 9 号东南部,斯诺霍米什,华盛顿州 98296
505 South SR 49,马里波萨,CA 95338 505 South State Route 49, 马里波萨, CA 95338
606 SR 22 W,瑟克尔维尔,俄亥俄州 43113 606 State Route 22 W, Circleville, OH 43113
707 East SR 134,威尔明顿,俄亥俄州 45177 707 东 134 号国道,威尔明顿,俄亥俄州 45177

dbFiddle

© www.soinside.com 2019 - 2024. All rights reserved.