0
我正在使用的数据库表有四个特定列中的某些值的引号。我已经使用下面的查询来选择我需要的数据,但我希望能够从这些列中删除引号。在现有的SQL查询中添加修剪功能
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
我将TRIM的双列引号的4列是:profile.address1, profile.city, profile.postal_code, and profile.phone
列。我相信代码将是这样的:
TRIM(BOTH '"' FROM profile.address1) AS trimmed_profile.address1 FROM user_profiles
...但我不能完全肯定是否可以在上面
这需要合并到查询中。无论出于何种原因,当用户配置文件数据添加到站点时,它将用引号存储在数据库中。我不想修改数据库中的数据,只修改由于上述查询而输出的数据。 – 2014-12-05 06:41:36
是的,它不会更新数据,它只会在显示时间'MAX(CASE WHEN取代(t2.profile_key,''','')='profile.address1'THEN t2.profile_value END)地址' – 2014-12-05 06:44:13
感谢您指示我朝着正确的方向行!最后必须让替换部分像这样移动:'MAX(CASE WHEN t2.'profile_key' ='profile.address1'THEN replace(t2.profile_value,''','' )结束)地址,'但是然后它工作 – 2014-12-05 07:03:36