2016-02-11 136 views
0

我想在查詢中包含空格/空白字符。我使用的CASE條件將數值分類爲:'Syrah N','Chardonnay B',...我的價值和大寫字母之間有一個空格。當數值以查找的字母開始時,查詢是無用的(例如:'Barbaroux RS'被分類爲B,但它必須是RS)。SQL - 空格/空白字符代碼

實際查詢

SELECT name 
CASE 
    WHEN name LIKE '%N%' THEN 'Red' 
    WHEN name LIKE '%B%' THEN 'White' 
    WHEN name LIKE '%RS%' THEN 'Green' 
    ELSE 'Other' 
END 
FROM mytable 

通緝查詢

SELECT name 
CASE 
    WHEN name LIKE '% N %' THEN 'Red' 
    WHEN name LIKE '% B %' THEN 'White' 
    WHEN name LIKE '% RS %' THEN 'Green' 
    ELSE 'Other' 
END 
FROM mytable 

我怎麼能寫 '%空間空間%'?

+0

這是哪種RDBMS?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

+0

這是PostgreSQL 9.1.18 – GeoGyro

回答

1

添加一個空格字符之前和一個名稱後,然後做你的LIKE

SELECT name 
CASE 
    WHEN ' ' || name || ' ' LIKE '% N %' THEN 'Red' 
    WHEN ' ' || name || ' ' LIKE '% B %' THEN 'White' 
    WHEN ' ' || name || ' ' LIKE '% RS %' THEN 'Green' 
    ELSE 'Other' 
END 
FROM mytable 

||是ANSI SQL級聯。一些dbms產品有其他的結構...

+0

對我來說沒問題(PostgreSQL 9.1.18)。我如何精確地確定每個案例的多個值? '('%N%','%Noir%','%NOIR%','%noir%')' – GeoGyro

+0

在'LIKE'之間做'OR'。也許你應該考慮給你添加一個額外的列表? – jarlh

+0

沒關係。例子'when''||名稱|| ''就像'%RS%'或''||名稱|| ''''%Rs%''然後'Green''謝謝 – GeoGyro