2015-07-01 76 views
0

汽车MySQL的CASE WHEN CASE内。当

Make | Model | Year | Color 
Honda | Accord | 12  | Red 
Lexus | IS | 14  | Blue 

我喜欢收到这些文件,必须做出一定标题行的参数相匹配之前,我把它送上一个PHP脚本。

我现在有一个SELECT CASE时检查其他错误,如代码空白:

SELECT 
CASE 
WHEN a.Make = '' THEN '**BLANK**' 
ELSE a.Make 
END as Make, 

难道有内一个SELECT,我可以使用,以确保接收的文件头(和唯一标题)匹配我们的标题?

+1

你试过了吗?代码在哪里? –

+2

您发布了一些示例数据。 “标题”是什么意思?表格有行和列。列被命名。你的意思是文件中的“列名”?或者它是一个文件它自己是一个“标题”的一些细节文件? –

+0

@KarolyHorvath我试过这段代码,但它运行的是替换所有行中的值的风险,我只是想要它替换第1行中的值。 – bennyharassi

回答

0

我认为没有必要这样做。在这种情况下,您也可以在此提及您的conds。类似

CASE 
WHEN a.Make = '' THEN '**BLANK**' 
ELSE a.Make 
WHEN a.Make <> '' AND a.Make <> 'Make' THEN 'ANOTHER' 
ELSE a.make 
WHEN a.Model <> '' AND a.Model <> 'Model' THEN 'ANOTHER' 
ELSE a.Model 
..... etc. 

我认为这个脚本可以为你工作。

+0

我想这个,但它看起来像1 CASE中的多个ELSE命令在MySQL – bennyharassi

1

纠正我。但根据我的理解,您希望有一个包含与列标题相同名称的记录。

CASE WHEN答。= '' THEN 'BLANK' WHEN答。<> '制作' OR a.Model <> '模型' THEN '无' WHEN。 .. .. ELSE答。 ...

+0

Yupp中产生一个错误。这也可能是您的问题的一个解决方案。 –

0

也许你应该尝试类似:

SET @make := (SELECT a.Make FROM cars a WHERE ...); 
SET @model := (SELECT a.Model FROM cars a WHERE ...); 

IF @make = 'Make' AND @model = 'Model' AND ... THEN 
#continue your script 
ELSE 
#end your script 
END IF;