gpt4 book ai didi

MySQL 查询无法正常工作。 Select 至少应该返回一些东西?

转载 作者:行者123 更新时间:2023-11-29 23:46:51 25 4
gpt4 key购买 nike

我的表有一列包含字符串、电子邮件数据,其名称是电子邮件。我的查询是:

SELECT * FROM email 
WHERE LCASE(replace(replace(gmail, ' ', ''), '.', ''))='zarlengod@gmailcom'

表中有电子邮件“zarlengod@gmail.com”,替换“.”后,我应该得到“zarlengod@gmailcom”,因此选择查询应该返回一些结果,但它没有?我必须以这种方式转换字符串。

最佳答案

回答您的问题:如果没有任何行满足谓词,查询将不会返回任何行。

我怀疑您要查找的该特定行的 gmail 列中存在其他一些意外字符。您查询中的表达式适用于 'zarlengod@gmail.com'

你怎么知道有一行具有该值?使用此谓词的查询会返回什么?

WHERE gmail = 'zarlengod@gmail.com'

如果没有返回行,那么您可以测试意外字符。最有可能位于字符串的末尾。看看这是否返回行:

WHERE gmail LIKE 'zarlengod@gmail.com%'

(在 LIKE 谓词中,% 字符是通配符,可匹配零个或多个任何字符。)尝试匹配值的较小部分:

WHERE gmail LIKE '%zarlengod%gmail%'

(如果您的列定义了区分大小写的排序规则,则可能需要使用 LOWER() 又名 LCASE() 函数。但如果是不区分大小写的排序规则,您不需要。)

如果返回一行,那么您可能需要使用 HEX(gmail)LENGTH(gmail) 来帮助进一步诊断问题。

一些常见的讨厌字符是换行符、回车符和制表符:

REPLACE(  ,'\n','')
REPLACE( ,'\r','')
REPLACE( ,'\t','')

另一种可能性是 gmail 和 com 之间实际上不是句号,而是逗号。如果您有一些其他标识符可用于返回行,则 HEX() 函数可以是“转储”VARCHAR 列的内容的便捷方法,以便更仔细地检查其内容。

有时我发现做这样的比较很方便:

SELECT 't', LENGTH(gmail), HEX(gmail) FROM email WHERE id = 1234
UNION ALL
SELECT 'c', LENGTH('zarlengod@gmail.com'), HEX('zarlengod@gmail.com')

关于MySQL 查询无法正常工作。 Select 至少应该返回一些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879766/

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