首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

数据库中查询含有某个emoji表情的行数据

编程知识
2024年09月03日 07:00

数据库中查询含有某个emoji表情的行数据

 

MySQL的情况

代码如下

​
create table tt6(id int, name varchar(800));
insert into tt6 select 1, '121😊33';
insert into tt6 select 2, 'ddd';
insert into tt6 select 3, '3669Ef';
​
​
select * from tt6

同样,name字段包含了各种字符串,包括带有表情符号的字符串。

 

现在我们直接进行比较

​
SELECT * FROM tt6 WHERE name = '121😊33';
SELECT * FROM tt6 WHERE BINARY name = '121😊33';

在 MySQL 中,varchar 或 char 列在使用 utf8mb4 字符集时,支持大部分 Unicode 字符,并且默认比较是基于字符集和排序规则的。这意味着你可以直接使用 = 操作符进行字符串比较。

SELECT * FROM tt6 WHERE name = '121😊33'; 这样的查询基于默认的排序规则来进行比较。

另外,MySQL 提供了 BINARY 关键字,可以将字符串转换为二进制格式来进行逐字节比较。

SELECT * FROM tt6 WHERE BINARY name = '121😊33'; 这样的查询会忽略排序规则,直接比较每个字符的字节值。

当然,MySQL在这里同样有一个优化,就是当你输入BINARY name 时候,告诉优化器等号两边都用字节比较,数据库自动将等号右边的数值转为字节。

 


 

 

SQL Server的情况
代码如下

create table tt6(id int, name nvarchar(800));
insert into tt6 select 1, '121😊33';
insert into tt6 select 2, 'ddd';
insert into tt6 select 3, '3669Ef';
​
select * from tt6

在这个表中,name字段包含了各种字符串,包括带有表情符号的字符串。

在 SQL Server 中,当你使用 nvarchar 或 varchar 数据类型进行比较时,数据库会按照列的排序规则(collation)来进行比较和处理Unicode字符。

这种比较方式通常考虑了字符的语义。

SELECT * FROM tt6 WHERE name = '121😊33';  这样的查询会根据列的排序规则进行比较。
另外,SQL Server 提供了 CAST(... AS BINARY) 的方式将字符串转换为二进制数据进行比较,这样可以确保比较的是字符串的字节级别的值。
SELECT * FROM tt6 WHERE CAST(name AS BINARY) = '121😊33'; 这样的查询会逐字节进行比较,以确保精确匹配。

当然,SQL Server在这里有一个优化,就是当你输入where cast(name as binary) 时候,告诉优化器等号两边都用字节比较,数据库自动将等号右边的数值转为字节,而不需要你在等号右边写CAST('121😊33' as binary);

 


 

总结

在 SQL Server 和 MySQL 中,既可以使用二进制比较,也可以直接进行字符串比较,这是因为两者都提供了不同层次的比较方式以满足不同的需求。

字符串比较和二进制比较的基本概念

  • 字符串比较:通常情况下,字符串比较是基于字符集和排序规则(collation)的。它在比较字符时考虑了字符的语义(如大小写敏感性、重音符号等),而不是简单的字节序列。
  • 二进制比较:二进制比较则是逐字节进行的,完全基于每个字符的实际二进制值。这种比较方式忽略了字符集的排序规则,只关注字符的字节表示。

 

 

 

参考文章

https://blog.sqlauthority.com/2020/02/28/sql-server-displaying-smiley-in-ssms-emoji/
https://www.reddit.com/r/SQL/comments/fasio7/sql_server_supports_emoji_in_identifier_names/?rdt=40804
https://www.genelify.com/blog/how-to-store-emoji-into-mysql-database#google_vignette
https://www.codeproject.com/Questions/5354414/How-to-store-emojis-in-a-mysql-table-Tried-everyth

 

 

 

 

本文版权归作者所有,未经作者同意不得转载。

From:https://www.cnblogs.com/lyhabc/p/18390882/query-rows-containing-emoji-in-database
本文地址: http://shuzixingkong.net/article/1680
0评论
提交 加载更多评论
其他文章 解密Prompt系列37. RAG之前置决策何时联网的多种策略
前置判断模型回答是否需要联网,之前介绍了自我矛盾和自我拒绝者两个方案。这一章我们再补充几种基于微调,模型回答置信度和小模型代理回答的方案。
解密Prompt系列37. RAG之前置决策何时联网的多种策略 解密Prompt系列37. RAG之前置决策何时联网的多种策略 解密Prompt系列37. RAG之前置决策何时联网的多种策略
全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法
在 Python 中,内置类型的行为是通过一组特殊的“魔法方法”来实现的,这些魔法方法以双下划线开头和结尾,比如 init 和 str,你可以通过重写这些魔法方法来定制或扩展内置类型的行为。
全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法 全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法 全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法
C#自定义控件—流动管道
C#用户控件之流动管道 如何绘制一个动态的流动管道(FlowPipe)? 分两步绘制 定义属性; 画布重绘; 主要技能: 管道的绘制(渐变色矩形) /// <summary> /// 画渐变色矩形的方法 /// </summary> /// <param name=&q
C#自定义控件—流动管道
使用kamailio进行分机注册及互拨
操作系统版本:Debian 12.5_x64 kamailio版本:5.8.2 kamailio作为专业的SIP服务器,可承担注册服务器的角色。今天记录下kamailio作为注册服务器,承接分机注册,并实现相互拨打的过程。 我将从以下几个方面展开: 模块配置 分机账号添加 无rtp代理的分机互拨 带
使用kamailio进行分机注册及互拨 使用kamailio进行分机注册及互拨 使用kamailio进行分机注册及互拨
省钱的开源项目「GitHub 热点速览」
本期,我从上周的热门开源项目中挑选了 5 个既省钱又省事,还好玩的开源项目。 首先,推荐的是省钱的电动汽车智能充电管理平台 evcc,它可以根据分时电价智能安排电动车充电时间,从而降低电费,如果你家还有太阳能充电和储能设备,evcc 更能最大限度地利用电能,让你的充电成本降到最低。说到省事,开源的
省钱的开源项目「GitHub 热点速览」 省钱的开源项目「GitHub 热点速览」 省钱的开源项目「GitHub 热点速览」
新手入门 | 搭建 AI 模型开发环境
目录安装显卡驱动和开发库对于 Tesla 系列显卡对于 N 卡安装 CUDA 和 cuDNN安装 Miniconda安装 PyTorch 和 Transformers使用 Modelscope 下载加载模型PyCharm 项目配置模型加载和对话CPU 和 GPU 问题transformers 版本错
新手入门 | 搭建 AI 模型开发环境 新手入门 | 搭建 AI 模型开发环境 新手入门 | 搭建 AI 模型开发环境
WPF性能优化之UI虚拟化
@目录前言一、VirtualizingStackPanel1.1 虚拟化功能介绍1、在Window中添加一个ListBox控件。2、在设计视图中用鼠标选中ListBox控件并右健依次单击“编辑其他模板”-“编辑项的布局模板”-“编辑副本”。3、查看生成的模板代码。1.2 虚拟化参数介绍二、Custo
WPF性能优化之UI虚拟化 WPF性能优化之UI虚拟化 WPF性能优化之UI虚拟化
解决auditwheel repair过程rpath被修改的问题
在开源Python项目中,如果使用到了Cython或者CUDA C++等需要编译的后端技术,那么要传到pypi上就需要经过一个PEP标准的审查。要通过审查,就要经过多个版本的Python的构建,以及auditwheel修复的过程。本文解决了一个auditwheel修复过程中有可能出现的rpath路径