CONCAT和IF ELSE一起?

时间:2012-01-03 14:23:44

标签: mysql sql

CREATE TABLE `users` (
  `id`             int(11) AUTO_INCREMENT,
  `academicdegree` varchar(255),
  `name`           varchar(255),
  `firstname`      varchar(255),
  `sex`            enum('m','f')
)
SELECT TRIM(CONCAT_WS(" ", firstname, name)) AS fullname FROM users

有没有办法根据一个查询中存储在“sex”字段中的ENUM值添加有用的称呼(先生或夫人)?

奖金跟踪 我只能替换此部分查询:TRIM(CONCAT_WS(" ", firstname, name))并且;不被允许。

2 个答案:

答案 0 :(得分:4)

这样可以正常工作:

SELECT TRIM(CONCAT_WS(" ", IF(sex='m', 'Mr.', 'Mrs.'), firstname, name)) AS fullname FROM users

您可以使用CASE语句,但是如果您只有两个选项,则IF()语句更有意义。

答案 1 :(得分:3)

SELECT TRIM(CONCAT_WS(" ", CASE sex WHEN 'm' THEN 'Mr.' WHEN 'f' THEN 'Mrs.' ELSE '' END, firstname, name)) AS fullname FROM users

(注意:这与其他答案的不同之处在于它不会假设空sex暗示'Mrs.'。虽然我个人不确定即使sex = 'f'也应该暗示'Mrs.',因为这种称呼通常不会用于未婚女性,至少低于某个年龄。)