我在sql' PIERCESTOWN WEXFORD EIRE' 我只想要' WEXFORD' ,搜索应该基于字符串' EIRE' 到目前为止我已经尝试了
DECLARE @a varchar(500)
SET @a='MALTON ROAD WICKLOW EIRE'
SELECT charindex('EIRE',@a)
SELECT SUBSTRING(@a,1,charindex('EIRE',@a))
但它给了我马尔顿路WICKLOW E' 任何帮助表示赞赏?
答案 0 :(得分:2)
试试这个
DECLARE @a varchar(500), @v varchar(500)
SET @a='MALTON ROAD WICKLOW EIRE'
SELECT @v = LTRIM(RTRIM(SUBSTRING(@a,1,charindex('EIRE',@a)-1)))
SELECT REVERSE( LEFT( REVERSE(@v),
ISNULL(NULLIF(CHARINDEX(' ', REVERSE(@v)),0)-1,LEN(@v)) ) )
结果:
DATA RESULT
-----------------------------------
MALTON EIRE MALTON
MALTON ROAD WICKLOW EIRE WICKLOW
答案 1 :(得分:1)
DECLARE @a varchar(500), @x varchar(500)
SET @a='MALTON ROAD WICKLOW EIRE'
SELECT @x = LTRIM(RTRIM(SUBSTRING(@a,1,charindex('EIRE',@a)))
SELECT REVERSE( LEFT( REVERSE(@x), CHARINDEX(' ', REVERSE(@x))-1 ) )
答案 2 :(得分:1)
您正在寻找“EIRE”之前的单词
你必须使用任何分割功能来分割句子。
尝试这样,
DECLARE @a varchar(500)
SET @a='MALTON ROAD WICKLOW EIRE'
;With CTE as
(select * from dbo.DelimitedSplit8K(@a,''))
select c.item from CTE c
inner join cte c1 on c.ItemNumber=c1.ItemNumber-1
where c1.item='EIRE'