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,
本质上,我在一个名为“详细信息”的表中有一个列,该列通常包含各种信息,例如:
Name: Person Person
Age: 40
Hair Colour: Blue
Eye Colour: Red
我知道理想情况下应该将这些信息存储为单独的列,但让我们假设无论出于何种原因都别无选择。为了只取回某个人的眼睛颜色,我可以运行上面的代码来查找起始位置,在本例中是“眼睛颜色:”,然后在删除所有不需要的信息的同时显示该行中的所有内容周围。
本质上,运行底部的选择语句会给我输出“眼睛颜色:红色”,但如果我想删除“眼睛颜色:”这个词怎么办,这样输出的唯一东西就是“红色”这个词。有没有办法在不使代码过于复杂的情况下解决这个问题?谢谢你的帮助。