案例:根据A列中的条件在B列中选择值

时间:2019-03-27 19:54:48

标签: mysql sql

我有一个带有值的表。根据B列中的值(数据的不同视图)复制值。我似乎无法根据条件选择一个值(如果A列中的值以XX或YY开头,则选择FIN,否则选择PO)

我尝试了“ if”和“ case”,但没有任何作用

Table

Code Geoview Metric         
XX1000  FIN 10
XX1000  PO  10
YY1800  FIN 20
YY1800  PO  20
TT2000  PO  35
TT2500  PO  50



`CASE 
    WHEN [Code] = '%XX' and [Code] = '%YY' 
    THEN [Geoview] = 'FIN' 
    ELSE [Geoview] = 'PO' 
    END`

如果代码以XX或YY开头,则在地理视图中以FIN返回行,否则获取PO(仅FIN或PO作为可用值)

4 个答案:

答案 0 :(得分:1)

使用LIKE和此模式'XX%',这意味着从'XX'开始:

select 
  Code,  
  CASE 
    WHEN Code LIKE 'XX%' OR Code LIKE 'YY%' THEN 'FIN' 
    ELSE 'PO' 
  END Geoview,
  Metric
FROM mytable

或使用LEFT()

select 
  Code,  
  CASE 
    WHEN LEFT(Code, 2) IN ('XX', 'YY') THEN 'FIN' 
    ELSE 'PO' 
  END Geoview,
  Metric
FROM mytable

答案 1 :(得分:0)

对于以XX或YY开头的字符串,请使用LIKE XX%LIKE YY%

对于检查,都使用OR代替AND

CASE 
   WHEN [Code] LIKE 'XX%' OR [Code] LIKE  'YY%' 
    THEN [Geoview] = 'FIN' 
    ELSE [Geoview] = 'PO' 
END

答案 2 :(得分:0)

尝试如下

      select code,case when code like '%XX' or '%YY'
       then 'FIN' 
       else 'PO' emd as geo from table_name

答案 3 :(得分:0)

您可以使用CASE在谓词中创建复杂的关系条件,但是出于性能目的,最好以更直接的方式对其进行编码。

192.168.0.1     cc:35:40     15     882  Technicolor CH USA 
192.168.0.2     cc:35:40      7     294  Technicolor CH USA 
192.168.0.3     cc:35:40      1      42  Technicolor CH USA 
192.168.81.1    cc:35:40      1      42  Technicolor CH USA