mysql - 从列名中删除后缀

标签 mysql sql

我的一些专栏在末尾有后缀 _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'

Sample fiddle

关于mysql - 从列名中删除后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37546319/

相关文章:

mysql - 如何在 mysql 中实现该 SQL 查询?

php - 如何从 MySQL 中的 dob 获取年龄?

mysql - SQL 多重 Select ... where id in 和 DISTINCT

mysql - 删除巨大的mysql表中的所有字段

mysql - 传输到新服务器时要移动哪些 MySQL InnoDb 文件?

mysql - 检查表中是否存在所有条目

php - 我如何使用 Laravel Eloquent Query Builder 执行此查询

c# - 使用非参数化查询避免 SQL 注入(inject)

mysql - 在 MySql 上的 SELECT 语句中重新排列列顺序

MySQL 从同一组外部表中获取成对的行