我的一些专栏在末尾有后缀 _a
。
我想检查该列是否有这样的后缀,如果有,只需将其从我的结果集中删除。
这是我的查询:
SELECT t1.column_name FROM information_schema.Columns t1
WHERE t1.table_name = 'myTab1' AND t1.table_schema = 'myDatabase1'
我需要添加如下内容:
IF(SUBSTR(column_name, -2) == "_a", SUBSTR("column_name", 0, -2))
这样col_a
就变成了col
。
我需要保留后缀,所以我不能完全重命名我的列名。
最佳答案
\
是对特殊字符_
进行转义。
SELECT case when t1.column_name like '%\_a' then SUBSTRING(t1.column_name, 1, length(t1.column_name)-2)
when t1.column_name like '%|a' then SUBSTRING(t1.column_name, 1, length(t1.column_name)-2)
else t1.column_name end
FROM information_schema.Columns t1
WHERE t1.table_name = 'myTab1' AND t1.table_schema = 'myDatabase1'
根据注释,如果要搜索的字符串模式应包含 |a
,请使用 t1.column_name like '%|a'
关于mysql - 从列名中删除后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37546319/