我的一些列末尾有_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
。
我需要保留后缀,所以我不能完全重命名我的列名。
答案 0 :(得分:2)
\
是为了逃避特殊字符_
。
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'
答案 1 :(得分:-1)
稍微不那么动态(但可以说更具可读性)的解决方案就是这样的:
Select t1.column_name_a as column_name, t1.column_name2_a as t1.column_name2
from information_schema.Columns t1
where t1.table_name = 'myTab1' and t1.table_schema = 'myDatabase1'
如果您真的需要动态的东西,请使用其他建议的答案之一。如果你的专栏名称是一致的,这可能是我个人见过的更标准的做法。