当查询字符串返回空值时,我们如何添加动态值?

时间:2013-06-25 09:18:47

标签: mysql

SELECT first_name,last_name,IFNULL(state_table.state_name,"replace string") FROM doctor_table left join state_table on state=state.id

我们可以使用sql select查询而不是字符串_“replace_string”_?

4 个答案:

答案 0 :(得分:0)

尝试联合所有

SELECT first_name,last_name, state_table.state_name 
FROM doctor_table left join state_table on state=state.id 
WHERE state_table.state_name <> NULL

UNION ALL

SELECT first_name,last_name, "replace_string" as state_name
FROM doctor_table left join state_table on state=state.id 
WHERE state_table.state_name == NULL

答案 1 :(得分:0)

您可以使用IFNULL

的子选择
SELECT first_name, last_name,
       IFNULL(state_table.state_name,(SELECT some_value FROM some_table WHERE id=some_key))
FROM doctor_table
LEFT JOIN state_table on state=state.id

您需要确保您的子选择返回1个值,否则整个查询将失败。

这是一个sqlfiddle的想法。

答案 2 :(得分:0)

你可以这样做

SELECT first_name,last_name,
IFNULL(state_table.state_name,(SELECT `name` FROM table WHERE Id='something' LIMIT 1)) as something 
FROM doctor_table left join state_table on state=state.id

答案 3 :(得分:0)

我不确定是否有任何特定于mysql的怪癖,但是在t-sql中你可以在ISNULL中使用嵌套的select语句,但它不会产生特别有效的查询。

通过在首选表上进行外连接,然后在调用ISNULL时使用所需的列作为第二个参数,可以获得更好的性能。