繁体   English   中英

使用 SQL 中的 select 查询/子查询的值更新字段

[英]Update field with values from a select query/subquery in SQL

你好,我需要 select 一个特定的字符串形成一个表的字段,然后填充同一个 SQL 数据库中不同表中的另一个字段。 我正在从字段中提取日期。 字符位于两个下划线之间。 我能够使用 Stack 上一篇文章的指导正确创建 Select 语句,但是当我尝试将它与更新语句融合时,会引发错误。 我检查了这两个字段,它们是同一类型的 NVARCHAR。

提前致谢。

抛出的错误 = select 列表中不能指定一个表达式,当子查询没有引入 EXISTS 时

UPDATE [DMSEngine_HR].[dbo].[IndexForm_Legiant]
SET [DMSEngine_HR].[dbo].[IndexForm_Legiant].Date_Field=
 (SELECT [DisplayName],
   CASE
   WHEN CHARINDEX('_',(SUBSTRING([DisplayName],CHARINDEX('_',[DisplayName],1)+1,99))) = 0
   THEN LTRIM(RTRIM(SUBSTRING([DisplayName],CHARINDEX('_',[DisplayName],1)+1,99)))
   ELSE LTRIM(RTRIM(SUBSTRING(

    /* <text>> */ [DisplayName],
    /* <start > */      CHARINDEX('_',[DisplayName],1) + 1,
    /* <length> */      CHARINDEX('_', SUBSTRING([DisplayName],
                        CHARINDEX('_', [DisplayName], 1) + 1, 99)) - 1
        ) ) )

    END    AS Result_string

FROM [DMSEngine_HR].[dbo].[Document]
   where DocumentPath like'%legiant%')
   FROM [DMSEngine_HR].[dbo].[IndexForm_Legiant]  INNER JOIN  [DMSEngine_HR].[dbo].[Document]
   ON [DMSEngine_HR].[dbo].[Document].DocumentID = [DMSEngine_HR].[dbo].[IndexForm_Legiant].DocumentID```

我认为这就是您要查找的内容,您的查询有几个问题,所以我不确定您要更新的列是什么

UPDATE 
    l
SET l.Date_Field=
   CASE
   WHEN CHARINDEX('_',(SUBSTRING([DisplayName],CHARINDEX('_',[DisplayName],1)+1,99))) = 0
   THEN LTRIM(RTRIM(SUBSTRING([DisplayName],CHARINDEX('_',[DisplayName],1)+1,99)))
   ELSE LTRIM(RTRIM(SUBSTRING(

    /* <text>> */ [DisplayName],
    /* <start > */      CHARINDEX('_',[DisplayName],1) + 1,
    /* <length> */      CHARINDEX('_', SUBSTRING([DisplayName],
                        CHARINDEX('_', [DisplayName], 1) + 1, 99)) - 1
        ) ) )

    END    
   FROM 
    [DMSEngine_HR].[dbo].[IndexForm_Legiant]  l
    INNER JOIN  [DMSEngine_HR].[dbo].[Document] d
    ON 
    d.DocumentID = l.DocumentID
    AND  DocumentPath like'%legiant%';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM