如何在所有 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 列中的第二个和第四个字符之后插入“/”

使用查询检索数据时从 varchar 中删除特定字符

无效的 XML 字符错误 - 如何从 VARCHAR2 数据库列中查找无效字符?

使用 SQL Server 在 varchar 列中查找非 ASCII 字符