如何在所有 varchar 列中查询特定字符 [重复]
Posted
技术标签:
【中文标题】如何在所有 varchar 列中查询特定字符 [重复]【英文标题】:How to query through all varchar columns for a specific char [duplicate] 【发布时间】:2020-02-20 04:49:36 【问题描述】:我必须在表格的所有列(和行)中搜索字符“ - ”。目前我有这个:
SELECT *
FROM `my_table`
WHERE (
SELECT C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE C.TABLE_NAME = 'my_table'
) LIKE('%-%');
但是,由于子查询返回多个值,这当然行不通。关于如何实现这一点的任何想法?
【问题讨论】:
你有多少列? 我有 114 列 D: 【参考方案1】:您可以在INFORMATION_SCHEMA.COLUMNS
上使用SELECT
获取查询,并在mysql 上使用Prepared SQL Statement 执行查询:
SET @query = '';
SELECT CONCAT('SELECT * FROM table_name WHERE ',GROUP_CONCAT(C.COLUMN_NAME SEPARATOR ' LIKE ''%-%'' OR '), ' LIKE ''%-%''') FROM INFORMATION_SCHEMA.COLUMNS C WHERE C.TABLE_NAME = 'table_name' INTO @query;
PREPARE stmtSearch FROM @query;
EXECUTE stmtSearch;
DEALLOCATE PREPARE stmtSearch;
demo on dbfiddle.uk
【讨论】:
以上是关于如何在所有 varchar 列中查询特定字符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ExecuteNonQuery 在 VARCHAR(MAX) 列中插入超过 8000 个字符?
如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]
如何在 Oracle 表的 varchar 列中的第二个和第四个字符之后插入“/”