如何查询,“如果此列包含'this',则替换另一列中的文本”

时间:2019-04-18 14:47:52

标签: sql

在基于“选择”的查询中,我想包括一个表达式:如果B列=“ Call”,则将A列中的所有内容替换为“ Call”。

我尝试了“当-然后”表达式:

 Column A = (CASE column a
 When 'Business' Then 'Call'

但是当B列没有“通话”时,这将更改A列中的每个业务条目。

我认为我需要一个If语句左右,但是不知道如何跨列使用它。

这是我的简化查询:

 Select *
 From [crimes]
 Where date_rept between '1/1/2019' and '1/31/2019'
 And column B in ('Call', 'Case')

这就是我所拥有的:

 COLUMN A          COLUMN B
 Natural           Case
 Business          Call
 Park              Call
 Business          Case

这就是我想要的:

 COLUMN A          COLUMN B
 Natural           Case
 Call              Call
 Call              Call
 Business          Case

我希望B列中的每个“通话”都被复制到A列中。

请原谅我缺乏知识。我不想编辑实际的数据表,而只希望根据我的参数查看数据。

谢谢!

7 个答案:

答案 0 :(得分:1)

您的case表达式也可以使用,只是您错过了else子句和条件columnB = 'Call'

CASE WHEN columna = 'Business' AND columnB = 'Call' THEN 'Call' ELSE columna END AS ColumnA

答案 1 :(得分:0)

这是您想要的吗?

update t
    set a = b
    where b = 'Call';

答案 2 :(得分:0)

您可以在case语句中引用其他列:

select
  case when B = 'Call' then 'Call' else A end as A,
  B
from [Crimes]
Where 
  date_rept between '1/1/2019' and '1/31/2019'
  and B in ('Call', 'Case')

答案 3 :(得分:0)

这将起作用:

Select case when columnB='Call' the 'Call' else columnA end
From [crimes]
Where date_rept between '1/1/2019' and '1/31/2019'
And column B in ('Call', 'Case')

答案 4 :(得分:0)

您需要这样的else语句:

(CASE WHEN columnb = 'Call' THEN 'Call' ELSE columna END) AS "Column A"

当然,您必须使语法适应您的SQL Dialact(您没有提到),但这就是逻辑。

答案 5 :(得分:0)

希望这会起作用!

选择c.B ='Call'时的大小写,然后'Call'否则c.A End,c.B  从犯罪到c  其中date_rept在'1/1/2019'和'1/31/2019'之间  AND B(“呼叫”,“案例”)

答案 6 :(得分:0)

这可能有效。

SELECT CASE WHEN COLUMN_B= 'Call' THEN 'CALL' ELSE COLUMN_A END AS COLUMN_A,
COLUMN_B
FROM CRIMES
WHERE DATE_REPT BETWEEN '1/1/2019' AND '1/31/2019'
AND COLUMN_B IN ('Call', 'Case')