提前谢谢你!我在SQL Server2008 R2中工作。
我正在尝试做的是,我有一个文本类型的列,它有一个名字和姓氏,然后显示一个^,我想做的是捕获到^(所以必须是名字和姓氏)的文本,并将其附加到同一表中另一列的最底部(而不是替换)。
我试过使用charindex,但我只是收到索引号,似乎不能让它在^出现之前捕获文本,我只是得到^的位置,而且我很难将这个文本块附加到同一表中的另一个文本类型列中。为此,我一直在尝试updatetext函数,但它似乎不起作用。到目前为止,我已经放弃了我尝试过的东西,因为我在任何地方都没有出现错误。
因此,总结一下:
我需要捕获文本数据类型列开头的文本,直到它到达^符号
将该文本保存到某种变量中。
将(append)放入另一个文本数据类型列中,并添加少量内容。
这似乎应该是简单的,但我有一个困难的时间,请提出建议,如果可能。谢谢。
发布于 2012-10-16 06:00:36
首先,让我们找出col1中^的起始位置
CHARINDEX('^', col1)然后,我们将使用LEFT通过指定要返回的字符数来返回列的左侧部分。但是,由于^位于起始位置,我们需要减去1。
LEFT(col1, CHARINDEX('^', col1) - 1)然后,我们使用+ (2012+中的CONCAT)将另一个列(col2)连接到下面的列:
col2 + LEFT(col1, CHARINDEX('^', col1) - 1)如果您需要进行其他添加,可以使用加号分隔字符串值:
'Hello' + ' ' + 'World'最后的语句可能类似于:
SELECT col2 + LEFT(col1, CHARINDEX('^', col1) - 1) AS col更新
如果有些值没有长度,您将需要一条CASE语句来防止收到"Invalid length parameter to the LEFT or SUBSTRING function“错误:
SELECT
CASE
WHEN CHARINDEX('^', col1) > 0
THEN LEFT(col1, CHARINDEX('^', col1) - 1)
ELSE col1
END AS col发布于 2012-10-16 05:48:37
CharIndex为您提供了要查找的字符的数字位置。您需要在另一个函数中使用它,如LEFT或RIGHT,以获得所需的子字符串。下面是获取^字符前面的字段第一部分的方法:
SELECT LEFT(SomeField, CharIndex('^', SomeField) - 1)(减去1可从子字符串中排除^。)
https://stackoverflow.com/questions/12904479
复制相似问题