gpt4 book ai didi

MySQL SELECT From TABLE WHERE FIELD TITLE 不喜欢

转载 作者:行者123 更新时间:2023-11-30 23:03:43 25 4
gpt4 key购买 nike

是否可以在MySQL中进行以下操作

SELECT * FROM 'table name' WHERE 'field name' NOT LIKE '%string%';

我正在处理以前由其他人建立的数据库 - 有很多基于位置的鞋码字段标题 - 即 quantity_size_125_grantham

我想运行一个查询,从数据库中选择字段标题名称不是“%grantham%”的所有列和行。我想排除 quantity_size_integer_*location* 的多个列。

这可能吗?

谢谢,

最佳答案

不,不可能动态创建 SQL 语句并在单个语句中执行它。可以分两步完成。

可以从 information_schema 检索列元数据数据库,来自 columns ,例如:

SELECT c.*
FROM information_schema.columns c
WHERE c.column_name NOT LIKE '%string%'
AND c.table_schema = 'mydatabase'
AND c.table_name = 'mytable'
ORDER BY c.table_name, c.ordinal_position

由于 MySQL 语句必须定义要返回的列,因此不可能在查询中动态包含/排除列。

您可以使用 information_schema数据库帮助你创建一个SQL语句,像这样,作为例子:

SELECT CONCAT('SELECT '
,GROUP_CONCAT(CONCAT('t.`',c.column_name,'`') ORDER BY c.ordinal_position)
,' FROM `',c.table_name,'` t'
) AS stmt
FROM information_schema.columns c
WHERE c.table_schema = 'mydatabase'
AND c.table_name = 'mytable'
AND c.column_name NOT LIKE '%string%'
GROUP BY c.table_name

注意: GROUP_CONCAT 返回的字符串的长度功能受限于 group_concat_max_lenmax_allowed_packet变量。

这个查询只返回一个字符串;它实际上并不执行生成的语句。这需要作为一个单独的步骤来完成。


<罢工>是的,这是可能的。但是不要在标识符周围使用单引号。

如果您需要“引用”标识符,MySQL 标准是在它们周围使用反引号。 (如果 SQL_MODE 包含 ANSI_QUOTES 也可以使用双引号)

这个:

SELECT t.*
FROM `table_name` t
WHERE t.`field_name` NOT LIKE '%string%'

将返回表中值在 field_name 中的所有行列未设置为 NULL,并且值不包含字符串 string .

关于MySQL SELECT From TABLE WHERE FIELD TITLE 不喜欢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com