Sql 删除字符串的一部分
基本上,我在一个表中有一列叫做“details”,它通常包含各种信息,例如:Sql 删除字符串的一部分,sql,string,tsql,replace,Sql,String,Tsql,Replace,基本上,我在一个表中有一列叫做“details”,它通常包含各种信息,例如: DECLARE @A VARCHAR(MAX), @StartPosistion int, @StringLen int Select -- Setting up the strings to split (details) @StartPosistion = charindex('Eye Colour:', details), @StringLen = patindex('
DECLARE
@A VARCHAR(MAX),
@StartPosistion int,
@StringLen int
Select -- Setting up the strings to split (details)
@StartPosistion = charindex('Eye Colour:', details),
@StringLen = patindex('%'+CHAR(10)+'%',substring(details,@StartPosistion ,len(details)))
FROM
XXX.XXX --Table/Database
SELECT
substring(XXX.XXX ,@StartPosistion ,@StringLen-1 ) AS EyeColour,
我知道理想情况下,这些信息应该存储为单独的列,但让我们假设无论出于何种原因,都没有选择。为了得到某个人的眼睛颜色,我可以运行上面的代码,寻找一个起始位置,在这个例子中是“眼睛颜色”,然后显示这一行中的所有内容,同时删除周围所有不需要的信息
基本上,运行底部select语句会给我输出“Eye color:Red”,但是如果我想删除“Eye color:”这个词,那么唯一输出的就是“Red”这个词呢。有没有一种方法可以在不过度复杂化代码的情况下实现这一点?谢谢你的帮助 当您使用charindex(“眼睛颜色:”,详细信息)时,charindex将返回眼睛颜色的起始位置,但理想情况下,您需要在眼睛颜色之后的位置,这样您就可以硬编码11+1,11是“眼睛颜色:”,加1是红色的实际起始位置
你能告诉我关于价值的详细情况吗,这样我可以更好地帮助你
问候
Ashutosh Arya替换已有结果中的搜索字符串 使用“子字符串(XXX.XXX,@startposition,@StringLen-1)作为眼睛颜色”,您将获得“眼睛颜色:红色” 所以围绕着这个
Name: Person Person
Age: 40
Hair Colour: Blue
Eye Colour: Red
我想你可以做一个简单的替换。请看这里:请给出列中的确切值,至少两个。.详细信息列中的两个数据示例是:姓名:约翰·毕肖普年龄:40头发颜色:蓝眼睛颜色:红色体重:120公斤和姓名:蒂姆·汤姆年龄:19头发颜色:棕色眼睛颜色:黑色体重:90公斤当然,我想得不对,谢谢你的回答!我按照你的建议做了,效果很好。不过,就性能而言,您认为您的方式比在某处添加替换语句更好吗?我的猜测是,硬编码的立场将更好,因为做一个替换将最终使用更多的资源。你认为呢?欢迎:)硬编码是好的,因为传入的coulumn总是这样,即使你使用replace,你也必须硬编码值,说replace'Eye color:'用sothing说','。就性能而言,两者几乎相同,在本栏中添加索引将有所帮助。干杯
Replace (substring(XXX.XXX ,@StartPosistion ,@StringLen-1 ), 'Eye Colour: ', '') AS EyeColourValueOnly