首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Charindex update语句问题

Charindex update语句问题
EN

Stack Overflow用户
提问于 2012-10-16 05:42:38
回答 2查看 934关注 0票数 1

提前谢谢你!我在SQL Server2008 R2中工作。

我正在尝试做的是,我有一个文本类型的列,它有一个名字和姓氏,然后显示一个^,我想做的是捕获到^(所以必须是名字和姓氏)的文本,并将其附加到同一表中另一列的最底部(而不是替换)。

我试过使用charindex,但我只是收到索引号,似乎不能让它在^出现之前捕获文本,我只是得到^的位置,而且我很难将这个文本块附加到同一表中的另一个文本类型列中。为此,我一直在尝试updatetext函数,但它似乎不起作用。到目前为止,我已经放弃了我尝试过的东西,因为我在任何地方都没有出现错误。

因此,总结一下:

我需要捕获文本数据类型列开头的文本,直到它到达^符号

将该文本保存到某种变量中。

将(append)放入另一个文本数据类型列中,并添加少量内容。

这似乎应该是简单的,但我有一个困难的时间,请提出建议,如果可能。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-16 06:00:36

首先,让我们找出col1^的起始位置

代码语言:javascript
复制
CHARINDEX('^', col1)

然后,我们将使用LEFT通过指定要返回的字符数来返回列的左侧部分。但是,由于^位于起始位置,我们需要减去1。

代码语言:javascript
复制
LEFT(col1, CHARINDEX('^', col1) - 1)

然后,我们使用+ (2012+中的CONCAT)将另一个列(col2)连接到下面的列:

代码语言:javascript
复制
col2 + LEFT(col1, CHARINDEX('^', col1) - 1)

如果您需要进行其他添加,可以使用加号分隔字符串值:

代码语言:javascript
复制
'Hello' + ' ' + 'World'

最后的语句可能类似于:

代码语言:javascript
复制
SELECT col2 + LEFT(col1, CHARINDEX('^', col1) - 1) AS col

更新

如果有些值没有长度,您将需要一条CASE语句来防止收到"Invalid length parameter to the LEFT or SUBSTRING function“错误:

代码语言:javascript
复制
SELECT
  CASE
    WHEN CHARINDEX('^', col1) > 0
      THEN LEFT(col1, CHARINDEX('^', col1) - 1)
    ELSE col1
  END AS col
票数 0
EN

Stack Overflow用户

发布于 2012-10-16 05:48:37

CharIndex为您提供了要查找的字符的数字位置。您需要在另一个函数中使用它,如LEFT或RIGHT,以获得所需的子字符串。下面是获取^字符前面的字段第一部分的方法:

代码语言:javascript
复制
SELECT LEFT(SomeField, CharIndex('^', SomeField) - 1)

(减去1可从子字符串中排除^。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12904479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档