SQL中搜索中文无效或Select中文变乱码

简介: SQL中搜索中文无效或Select中文变乱码

当我们数据中含有中文,或我们想要Select出中文,当我去查询的时候默认情况下是无法搜索、无法显示的。
这是因为默认是不支持中文,只有NVARCHAR才支持中文
例子:


SELECT *
  FROM [DataManagement].[PersonalDetails]
  where ChineseName = '成龙'

这样是无法搜索出成龙的。

同理,以下查询也是无效的

DECLARE @date1 DATE, @date2 DATE, @date3 DATE, @date4 DATE;

SET @date1=GETDATE();
SET @date2=CONCAT((Select CurrentAcademicYear 
from SchoolDataManagement),'-09-01');   
SET @date3=CONCAT(((Select CurrentAcademicYear 
from SchoolDataManagement)+1),'-03-01');     
SET @date4=CONCAT(((Select CurrentAcademicYear 
from SchoolDataManagement)+1),'-08-01');



IF @date1=@date2                                                
SELECT '第一学期' as SemesterName
ELSE
IF @date1>@date2 AND @date1 <@date3
SELECT '第一学期'  as SemesterName            
ELSE 
IF @date1>@date3 AND @date1 <@date4
SELECT '第二学期' as SemesterName;

如果你SELECT '第一学期' 即可发现,'第一学期'会变成????问号

解决办法

在冒号前添加N即可

SELECT *
  FROM [DataManagement].[PersonalDetails]
  where ChineseName = N'成龙'
DECLARE @date1 DATE, @date2 DATE, @date3 DATE, @date4 DATE;

SET @date1=GETDATE();
SET @date2=CONCAT((Select CurrentAcademicYear 
from SchoolDataManagement),'-09-01');   
SET @date3=CONCAT(((Select CurrentAcademicYear 
from SchoolDataManagement)+1),'-03-01');     
SET @date4=CONCAT(((Select CurrentAcademicYear 
from SchoolDataManagement)+1),'-08-01');



IF @date1=@date2                                                
SELECT N'第一学期' as SemesterName
ELSE
IF @date1>@date2 AND @date1 <@date3
SELECT N'第一学期'  as SemesterName            
ELSE 
IF @date1>@date3 AND @date1 <@date4
SELECT N'第二学期' as SemesterName;
相关文章
|
SQL 人工智能 关系型数据库
SQL玩转多模态AI,轻松搞定图片+文本混合搜索
本文介绍了一种通过原生SQL实现多模态智能检索的破局思路,基于PolarDB创新融合AI智能引擎,解决传统AI检索系统数据迁移冗余和工具链割裂的问题。方案优势包括低门槛AI集成、灵活适配多场景、全链路数据安全及按需付费免运维。文章详细描述了部署资源、应用配置及方案验证步骤,并提供清理资源指南以避免额外费用。适合希望快速构建智能搜索应用的开发者参考实践。
|
SQL Java 数据库连接
SQL SELECT语句的基本用法
SQL SELECT语句的基本用法
|
SQL 数据挖掘 大数据
如何在 SQL Server 中使用 `SELECT TOP`
【8月更文挑战第10天】
679 7
如何在 SQL Server 中使用 `SELECT TOP`
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
217 1
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
157 5
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第12天】SQL SELECT TOP 子句。
111 14
|
SQL 存储 数据库
SQL SELECT 语句
【7月更文挑战第10天】SQL SELECT 语句。
111 9
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第13天】SQL SELECT TOP 子句。
125 5
|
SQL 数据库
SQL SELECT DISTINCT 语句
【7月更文挑战第10天】SQL SELECT DISTINCT 语句。
251 6
|
SQL 数据处理 数据库
SQL SELECT语句的高级应用与技巧
SQL SELECT语句的高级应用与技巧