MySQL LIKE 与 json_extract

2023-12-03

我有一个 MySQL 查询,其中按 json 字段进行过滤:

SELECT id, username 
FROM   (SELECT id, 
               Json_extract(payload, '$.username') AS username 
        FROM   table1) AS tmp 
WHERE  username = 'userName1'; 

它返回 1 行,如下所示:

1, "userName1"看到条款中没有的引号了吗?

我需要的是使WHERE子句不区分大小写。 但当我这样做时

WHERE username LIKE 'userName1';

它返回 0 行。我不明白为什么会这样=尽管没有双引号,但子句仍然有效。

If I do

WHERE username LIKE '%userName1%';现在也返回该行,因为%%考虑引号:

1, "userName1"

但当我这样做时

WHERE username LIKE '%username1%';它返回 0 行,所以与通常的 MySQL 不同LIKE它在某种程度上区分大小写。

我做错了什么以及如何以不区分大小写的方式过滤 json 有效负载? 编辑============================================ 猜测是COLLATE应该在这里使用,但到目前为止我不明白如何使它工作。


MySQL的默认排序规则是latin1_swedish_ci8.0之前 and utf8mb4_0900_ai_ci从 8.0 开始。因此,在普通列中,非二进制字符串比较默认不区分大小写。

然而,正如中提到的MySQL JSON 类型手册

MySQL 使用以下方法处理 JSON 上下文中使用的字符串utf8mb4字符集和utf8mb4_bin整理。”。

因此,您的 JSON 值位于utf8mb4_bin排序规则,您需要对任一操作数应用不区分大小写的排序规则,以使比较不区分大小写。

E.g.

WHERE username COLLATE XXX LIKE '...'

where XXX应该是 utf8mb4 排序规则(例如utf8mb4_general_ci你已经提到过。)。

Or

WHERE username LIKE '...' COLLATE YYY

where YYY应该是与您连接的字符集匹配的排序规则。

对于相等比较,您应该取消引用 JSON 值 with JSON_UNQUOTE()或不加引号的提取运算符->>

E.g.

JSON_UNQUOTE(JSON_EXTRACT(payload, '$.username'))

或者简单地

payload->>'$.username'

JSON 类型和函数的工作方式与普通数据类型不同。看来您是新手。所以我建议你在投入生产环境之前仔细阅读手册。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL LIKE 与 json_extract 的相关文章

  • pyspark.sql.functions.window 函数的“startTime”参数和 window.start 有何作用?

    示例如下 df spark createDataFrame 1 2017 05 15 23 12 26 2 5 1 2017 05 09 15 26 58 3 5 1 2017 05 18 15 26 58 3 6 2 2017 05 15
  • 从 SQL 数据库获取日期时间

    我的数据库表中有一个 DateTime 记录 我编写一个查询从数据库中获取它 string command2 select Last Modified from Company Data where Company Name Descrip
  • 在内连接中重用 mysql 子查询

    我正在尝试优化查询 试图避免重复用 指示的查询 复杂查询 使用两次 结果相同 原始查询 SELECT news FROM news INNER JOIN SELECT myposter FROM SELECT COMPLEX QUERY U
  • 如何在postgresql中编写有关最大行数的约束?

    我认为这是一个很常见的问题 我有一张桌子user id INT 和一张桌子photo id BIGINT owner INT 所有者是一个参考user id 我想向表照片添加一个约束 以防止每个用户将超过 10 张照片输入数据库 写这个的最
  • 如何插入包含“&”的字符串

    如何编写包含 字符的插入语句 例如 如果我想将 J J Construction 插入数据库的列中 我不确定这是否有什么不同 但我正在使用 Oracle 9i 我总是忘记这一点 然后又回到它 我认为最好的答案是迄今为止提供的答复的组合 首先
  • 如何获得组中“中间”值的平均值?

    我有一个包含值和组 ID 的表 简化示例 我需要获取中间 3 个值的每组的平均值 因此 如果有 1 2 或 3 个值 则它只是平均值 但如果有 4 个值 它将排除最高值 5 个值将排除最高值和最低值 等等 我正在考虑某种窗口函数 但我不确定
  • 获取从开始日期到结束日期的活跃周数

    我的订阅数据如下所示 数据显示用户何时购买订阅 它有user id subscription id start date and end date 我已经得出wk start and wk end从中 user subscription i
  • 内连接 3 个表

    我正在使用 PHP 和 PDO 我需要重新收集连接 3 个表的信息 photos albums 相册照片 该表具有以下结构 photos photo id int path varchar nick varchar date timesta
  • mysql时间比较

    我有 job start 和 job end 时间 timediff 会给我时间差 现在我想看看这项工作是否花费了超过 2 小时 30 分钟 我如何比较它 如果我这样做 我会收到错误 timediff job start job end g
  • 迁移问题:MS SQL > MySQL:插入缓冲区内存

    我在使用 MySQL Workbench 上的内置迁移工具时遇到问题 我正在将一个非常大的数据库从 MS SQL 2014 迁移到 MySQL MS SQL 服务器本地部署在我的 Windows 8 1 桌面上 MySQL 服务器在我的网络
  • SQLite 使用循环重新编号 ID

    您好 我有一个包含许多插入行的表 我需要按 id 对所有行重新编号并排序 我找到了这段代码 但它对我不起作用 SET i 100 UPDATE main Categories SET ID i i 1 WHERE Name White AL
  • Laravel 读写连接不同步

    我在 Laravel 5 2 应用程序中使用读写 MySQL 连接设置 mysql gt write gt host gt env DB HOST WRITE localhost read gt host gt env DB HOST RE
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • Monkeyrunner/jython 中未找到 JDBC 驱动程序错误

    我需要在中插入一些东西DB 我在用着JDBC as a connector jython the script mysql数据库和脚本正在运行CentOS 我的代码看起来像这样 from com android monkeyrunner i
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • sql直接获取表行数的方法

    stackoverflow 的朋友们大家好 我的例行程序中有一个我认为不必要的步骤 假设您想从图库中获取所有图像 并限制每页一定数量的图像 db PDO object start pagenum x images per page limi
  • 如何对字段数据进行分组?

    我有 sql 查询来显示数据 SELECT artikel foto naam fotografer id fotografer name fotografer customer first name customer last name
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • mysql 查询选择当月的所有行?

    我有一个名为 startdate 的日期时间类型的列 我必须获取当前月份的开始日期和结束日期之间的所有行 即从 1 11 2014 到 30 11 2014 select from your table where year curdate

随机推荐

  • MySQL 和 NoSQL:帮助我选择正确的一个

    有一个很大的数据库 有 1 000 000 000 行 称为线程 这些线程实际上存在 我不会因为喜欢它而让事情变得更困难 Threads 中只有一些东西 可以让事情变得更快 int id 字符串哈希 int 回复计数 int 日期线 时间戳
  • 在不匹配的对等依赖项上强制 npm 安装失败

    有谁有获得的技术npm install完全fail当peerDependency版本不匹配时 我们经常遇到peerDependency 的问题warnings开发人员会忽视 并且当测试不充分时 semver 不匹配会导致损坏 如果我们的 C
  • LDAP 查询不适用于组域用户

    我运行一个查询 memberof CN Domain Users DC MYDOMAIN DC MYCOM 但它返回零结果 如果我为其他组运行相同的查询 它会返回结果 据我了解 当您创建用户时 它默认是Domain Users 你在中看不到
  • 如何使用 Grunt.js (0.3.x) 连接和缩小多个 CSS 和 JavaScript 文件

    注意 这个问题仅与 Grunt 0 3 x 相关 仅供参考 有关最新 Grunt 1 x 版本的帮助 请参阅我在这个问题下面的评论 我目前正在尝试使用 Grunt js 设置自动构建过程 首先连接然后缩小 CSS 和 JavaScript
  • 如何设置 .pdf 中的字体设置,通过 MATLAB 和 LATEX 发布

    在尝试发布 m MATLAB 代码的 pdf 文件时 方程 用 Latex 编写 未以适当 平滑 的字体正确呈现 而是字体看起来分散 我确实尝试通过减小编辑器的字体大小来解决问题 但这没有用 例如 MATLAB代码为 a 从上图看 rho
  • 如何通过代码打开多个网址,我们有一个代码,但它只适用于一个网址

    我们有以下脚本 我们正在谷歌脚本编辑器中运行它 它工作正常 但它只打开一个网址 如果我们想打开多个网址 我们该怎么做 函数是 function myFunction var js var html HtmlService createHtm
  • 设置打印机首选项 - 页面方向为横向

    我想将页面方向设置为 LandScape 以便从我的 excel Vsto 项目打印 excel 工作表 手动设置页面方向打印机首选项从 打印 表单弹出的窗口 我需要一些自动化 每次用户发出打印命令时都会将方向设置为景观 我注意到如果我将方
  • 从数据存储区读取(跨组)实体时发生 TransactionFailedError(争用过多...)

    我再次调查意外发生的情况TransactionFailedError too much contention on these datastore entities 在某些情况下 代码仅读取因争用问题而被归咎的实体组 Setup GAE 标
  • C 中语句 z=++x||++y&&++z 的运算符优先级

    我正在研究运算符优先级 但我无法理解x became 2以及y and z is 1 x y z 1 z x y z 这评估为 x 2 y 1 z 1 优先级高于 因此分配的整个 RHS 归结为增量x以及对真值的评估 1 z x y z t
  • 正则表达式从字符串中获取日期

    我需要一个正则表达式来从以下字符串中获取日期 anything 2011 01 17 16 50 19 xml 这是正确的吗 0 9 0 9 xml 这里检查格式 YYYY MM DD HH MM SS d 4 d 2 2 d 2 d 2
  • Selenium/python - 无法找到部分链接文本

    在 Windows 10 上运行 Chrome 驱动程序 作为脚本和来自 python REPL 的带有 Python 2 7 的 Selenium 无法通过部分链接文本找到元素 我不确定为什么 当我查看相关网页的源代码时 只有一个实例WO
  • 我可以仅在周围没有文字时选择 吗?

    我想仅在锚标记完全独立时才选择它们 这样我可以使它们看起来像按钮 而不会使句子中的锚看起来像按钮 我不想添加额外的类 因为这是在 CMS 中进行的 我最初是在尝试这个 article p a first child last child b
  • POST请求神秘地变成了GET请求

    我有一个带有 unicorn 和 nginx 的 Rails 4 1 应用程序 但不知何故 神秘的是我的 POST 请求变成了 GET 请求 这是请求标头 Remote Address lt
  • 在 Swift 中将 JSON 字符串转换为对象的简单而干净的方法

    我花了几天时间寻找如何将一个相当简单的 JSON 字符串转换为 Swift 中的对象类型 但没有成功 以下是 Web 服务调用的代码 func GetAllBusiness Alamofire request GET http MyWebS
  • 如何将变量传递到bitbucket-pipelines中的credentials.json?

    我正在使用 bbrun 来模拟本地运行的管道 本质上 我需要的 不是问题 是在 GCP 上自动执行 terragrunt 基础设施部署 因此 每次使用标签推送时 它都会部署特定的环境 这是我的 bitbucket pipelines yml
  • Python 生成器和迭代器的区别

    迭代器和生成器有什么区别 一些关于何时使用每种情况的示例会很有帮助 iterator是一个更一般的概念 任何其类具有 next 方法 next在Python 2 和 iter 的方法return self 每个生成器都是一个迭代器 但反之则
  • “setInterval”内“for”的索引

    我有一个对象 我把它放在一个数组中 然后我用for对于数组中的每个对象 我设置了一个设置的间隔 用于使用参数调用对象的方法 但我不能 这是我的 班级 function ClassTest this test function word co
  • GWT 主题样式覆盖我的 css 样式

    我有一些带有自己的 css 的 html 文件 我想在 gwt 应用程序中使用它们 因此我复制了应用程序中的 html 和 css 文件 问题是当我打开 html 时它使用 gwt 主题样式 例如 在我的 css 中 html body 背
  • 确定程序集的框架 (CLR) 版本

    从命令行 或通过任何方式 我如何确定哪个CLR版本a NET组装需要 我需要确定程序集是否需要 2 0 或 4 0 CLR 版本 ildasm exe如果您双击 MANIFEST 并查找 元数据版本 将会显示它 默认情况下 它是编译映像所针
  • MySQL LIKE 与 json_extract

    我有一个 MySQL 查询 其中按 json 字段进行过滤 SELECT id username FROM SELECT id Json extract payload username AS username FROM table1 AS