SQL Server更新大小写时的情况

时间:2018-11-13 10:09:23

标签: sql-server-2008 dynamic-sql

我需要更新表[Recipient on contract]中的列[Check_Result]。但是要插入到列中的值不是固定字符串,而是[All_Contracts]表中的值。因此,要插入[Recipient on contract]的所有行都是唯一的,可以通过键[ID Contract] = [Référence]

找到

[Check_Result][All_Contracts]之间的链接为[ID Contract] = [Référence]

Update [Check_Result]   
set [Recipient on contract] =
 If [Bénéficiaire] ="Personne morale" Then
            If [Organisme]  is not null Then get [Organisme] 
            Else get [Professionnel de santé]
        Else 
            If [Professionnel de santé] is not null Then get [Professionnel de santé]
            Else get [Organisme]

在这种情况下可以使用THEN吗? Update Case when then (select from inner join where)语句?

谢谢

1 个答案:

答案 0 :(得分:0)

是的,CASE语句中的每个值都可以替换为嵌套在'('和')'周围的嵌套选择语句,即,这是有效的语句:

texts = driver.find_element_by_xpath("//div[@class='card-block cms']")
textInDivTag = texts.extContent
print(textInDivTag)

您也可以对IIF语句进行同样的操作

update table1 set
    field1 = CASE WHEN field2 = 'some value'
                  THEN (select field1 from table2 where table1.key_field = table2.key_field) 
                  ELSE 'some default value'
             END

您的更新声明不太清楚。您想从update table1 set field1 = IIF(field2 = 'some value', (select field1 from table2 where table1.key_field = table2.key_field), 'some default value') 表中获得哪个值?可以这样简化:

[All_Contracts]

您可以用Update [Check_Result] set [Recipient on contract] = IIF([Bénéficiaire] = "Personne morale", COALESCE([Organisme], [Professionnel de santé]), COALESCE([Professionnel de santé], [Organisme])) 替换[Professionnel de santé][Organisme]