我正在使用的数据库表在 4 个特定列中的某些值周围有引号。我已经使用以下查询来选择我需要的数据,但我希望能够从这些列中删除引号。
SELECT t1.id,
IF(
LOCATE(' ', t1.name) > 0,
SUBSTRING(t1.name, 1, LOCATE(' ', t1.name) - 1),
t1.name
) AS memberfirst,
IF(
LOCATE(' ', t1.name) > 0,
SUBSTRING(t1.name, LOCATE(' ', t1.name) + 1),
NULL
) AS memberlast ,
t1.name,
MAX(CASE WHEN t2.`profile_key` = 'profile.address1' THEN t2.profile_value END) address,
MAX(CASE WHEN t2.`profile_key` = 'profile.city' THEN t2.profile_value END) city,
MAX(CASE WHEN t2.`profile_key` = 'profile.postal_code' THEN t2.profile_value END) postal_code,
MAX(CASE WHEN t2.`profile_key` = 'profile.phone' THEN t2.profile_value END) phone
FROM users t1
LEFT JOIN user_profiles t2
ON t1.id = t2.user_id
GROUP BY t1.id, t1.name
我要修剪双引号的 4 列是:profile.address1、profile.city、profile.postal_code 和 profile.phone
列。我相信代码会是这样的:
TRIM(BOTH '"' FROM profile.address1) AS trimmed_profile.address1 FROM user_profiles
...但我不太确定它是否可以集成到上面
最佳答案
它不是trim()
,你需要使用replace()
mysql> select replace('"stackoverflow"','"','') as str;
+---------------+
| str |
+---------------+
| stackoverflow |
+---------------+
1 row in set (0.00 sec)
所以在你的情况下你可以使用一些东西
MAX(CASE WHEN replace(t2.profile_key,'"','') = 'profile.address1' THEN t2.profile_value END) address
其他人也是如此。
关于mysql - 将修剪功能添加到现有的sql查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310144/