2016-02-11 99 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