collate数据库(mysql数据库中的collation如何修改)

2026-06-04 01:15:01 :0

collate数据库(mysql数据库中的collation如何修改)

大家好,如果您还对collate数据库不太了解,没有关系,今天就由本站为大家分享collate数据库的知识,包括mysql数据库中的collation如何修改的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

mysql数据库中的collation如何修改

mysql中怎么修改collation

【问题报错】

在数据库插入数据时,varchar 类型的字段插入中文数据时报错。

报错原文:

【原因分析】

通过 show full columns from user_bean;语句查看字段的collation属性,发现字段的collation属性值是 latin1_swedish_ci ,说明字段默认为英语。未对汉语进行设置,所以当输入汉语时,mysql会报错为“字符串的值不正确”。

【解决方法】

1、mysql的配置文件 /etc/my.cnf,vi /etc/my.cnf

在 下面加入两行补充

2、重启Mysql服务 systemctl restart mysqld

向数据库插入含中文的数据,成功!

注意:上面步骤可以解决以后创建表时字段的collation属性的问题,但前面已经创建的表字段的collation属性值并不会发生变化。

如果要改变之前已经创建好的表,怎么办?

方法1:对原来的表进行修改,可以通过类似语句

alter table user_bean change address address varchar(255) character set utf8 collate utf8_general_ci not null;

方法2:删除原来的表,重新再建。

【命令总结】

SQLserver数据库怎么给指定的表区分大小写

这个 ALTER DATABASE 语句用来修改数据库的属性,比如改变它的默认排序规则(即 COLLATE)。因此,你可以使用它来设置数据库中所有表都区分大小写。

要使用这个语句,你需要先确保你有足够的权限去修改数据库。然后,你可以在 SQL Server Management Studio 中执行以下步骤:

  • 打开 SQL Server Management Studio 并连接到你想要修改的数据库服务器。

  • 在对象资源管理器中,右键单击你想要修改的数据库,然后选择“属性”。

  • 在“数据库属性”窗口中,选择“排序规则”选项卡。

  • 在“排序规则”下拉列表中,选择“Chinese_PRC_CS_AS”。

  • 单击“确定”按钮以保存更改。

  • 这样,数据库中的所有表都将区分大小写。但是,如果你只想修改某个特定的表,那么你可以在创建表时指定它的排序规则,或者使用 ALTER TABLE 语句来修改表的排序规则。

    举个例子,假设你想要修改名为“TBL_ACCOUNT”的表,使其区分大小写,你可以在创建表时指定排序规则:

这个 ALTER DATABASE 语句用来修改数据库的属性,比如改变它的默认排序规则(即 COLLATE)。因此,你可以使用它来设置数据库中所有表都区分大小写。

要使用这个语句,你需要先确保你有足够的权限去修改数据库。然后,你可以在 SQL Server Management Studio 中执行以下步骤:

  • 打开 SQL Server Management Studio 并连接到你想要修改的数据库服务器。

  • 在对象资源管理器中,右键单击你想要修改的数据库,然后选择“属性”。

  • 在“数据库属性”窗口中,选择“排序规则”选项卡。

  • 在“排序规则”下拉列表中,选择“Chinese_PRC_CS_AS”。

  • 单击“确定”按钮以保存更改。

  • 这样,数据库中的所有表都将区分大小写。但是,如果你只想修改某个特定的表,那么你可以在创建表时指定它的排序规则,或者使用 ALTER TABLE 语句来修改表的排序规则。

    举个例子,假设你想要修改名为“TBL_ACCOUNT”的表,使其区分大小写,你可以在创建表时指定排序规则:

    CREATE TABLE TBL_ACCOUNT (
    id INT PRIMARY KEY,
    username VARCHAR(255) COLLATE Chinese_PRC_CS_AS,
    password VARCHAR(255)
    );
    或者,如果你已经创建了表,你可以使用 ALTER TABLE 语句来修改表的排序规则:

    ALTER TABLE TBL_ACCOUNT
    ALTER COLUMN username VARCHAR(255) COLLATE Chinese_PRC_CS_AS;
    这样就可以让表“TBL_ACCOUNT”区分大小写了。

sql数据库COLLATE

数据虽然完全相同,但是的两个数据库实例的COLLATE设置不同,两者不兼容。这种情况通常出现在与临时表进行连接的时候。临时表创建在tempdb数据库里,它默认是继承了SQL Server实例的COLLATE设置。如果你的用户数据库是从另外一台服务器附加上来的话,很可能是另一中COLLATE设置。两者不兼容就会出现这种错误。
解决办法:可以在创建临时表时,为文本字段指定 COLLATE DATABASE_DEFAULT, 从而明确指定从当前用户数据库继承 COLLATE 设置。

sql中的collation干什么用

排序规则(collation)

关于SQL Server的排序规则,估计大家都不陌生,在创建数据库时我们经常要选择一种排序规则(conllation),一般我们会留意到每一种语言的排序规则都有许多种,比如标准大陆简体中文Chinese_PRC的排序规则就有数十种之多
这些排序规则有什么作用呢?让我们先来看看MS官方的解释:
排序规则指定了表示每个字符的位模式。它还指定了用于排序和比较字符的规则。排序规则具有下面的特征:
语言
区分大小写
区分重音
区分假名
比如在SQL Server 2005中,排序规则名称由两部份构成,比如 Chinese_PRC_CI_AI_WS
前半部份是指本排序规则所支持的字符集,如Chinese_PRC 指针对大陆简体字UNICODE的排序规则。
后半部份即后缀的含义如下:

_BIN
指定使用向后兼容的二进制排序顺序。
_BIN2 指定使用 SQL Server 2005 中引入的码位比较语义的二进制排序顺序。
_Stroke 按笔划排序
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分全半角,WI不区分,WS区分

既然排序规则如此复杂,那么应用了不同排序规则的列之间默认情况下便不能进行Union、Join、Like等equal操作了,于是便有了排序规则(collation)冲突。

排序规则(collation)冲突

我们知道,SQL Server 从2000 开始,便支持多个排序规则。SQL Server 2000 的数据库可使用除默认排序规则以外的其他排序规则。此外,SQL Server 2000 还支持为列专门制定排序规则。
这样一来,我们在写跨表、跨数据库、跨服务器操作的T-SQL时,如果equal的字段排序规则不同,便会发生排序规则冲突。
比如我们先见两个结构相同的表,但字段的排序规则不同:
-- 1. Create TableA.
CREATE TABLE TagsTableA
(
TagName NVARCHAR(64) COLLATE Chinese_PRC_BIN
)
-- 2. Create TableB.
CREATE TABLE TagsTableB
(
TagName NVARCHAR(64) COLLATE Chinese_PRC_CI_AS
)
当表建好之后执行:
-- 3. Try to join them
SELECT * from TagsTableA A INNER JOIN TagsTableB B on A.TagName = B.TagName
便会出下类似下面的问题:
无法解决 equal to 操作中 "Chinese_PRC_BIN" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
常见的场景——临时表

我们知道,SQL Server的临时表是保存在Tempdb数据库中的。而使用临时表的数据库与临时表的排序规则(conllation)不一定相同。所以,当Tempdb的排序规则与当前使用临时表的数据库排序规则不同时,便会出现排序规则冲突。
一般来说,我们在创建临时表时可能不会注意到排序规则,从而留下排序规则冲突的隐患。
比如Openlab V4.0的Blog模块中的一个存储过程,便有着这种隐患:
/****** 对?象ó: StoredProcedure 脚本日期: 01/20/2010 19:10:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
RETURN VALUES:
Ids
*/
-- =============================================
-- Author: 《Lance Zhang》
-- Create date: 《2010-01-06》
-- Description: 《Make sure all the tag EXISTS in DB, and then get their ids.》
-- 1. Create Temp Table.
-- 2. Insert TagNames into Temp Table.
-- 3. Add new Tags to from query Temp Table.
-- 4. Batch Get All Tag Ids from .
-- 5. Clear and drop Temp Table.
-- =============================================
ALTER PROCEDURE
(
@BlogId INT,
@TagNames XML
)
AS
BEGIN
/******************************* SET CONFIG *************************************************/
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NUMERIC_ROUNDABORT OFF
/******************************* DECLARE VARIABLE *************************************************/
/********************************BEGIN TRANSATION**********************************************/
BEGIN TRY
BEGIN TRANSACTION;
-- 1. Create Temp Table.
CREATE TABLE #TagsTable
(
TagName NVARCHAR(64)
)
-- 2. Insert TagNames into Temp Table.
INSERT INTO
#TagsTable
SELECT
TG.Tags.value(’@i’,’NVARCHAR(64)’) AS TagName
FROM
@TagNames.nodes(’/ts/t’) TG(Tags)
-- 3. Add new Tags to from query Temp Table.
BEGIN
INSERT INTO

(

,
,
,
,
,
,
,
,
,
,
,
)
SELECT
@BlogId,
0, -- ParentId, 0 as default.
2, -- CategoryType, 2 as Post Tag.
TT.TagName,
LOWER(TT.TagName),
TT.TagName, -- Slug, use CategoryName as default.
LOWER(TT.TagName), -- LoweredSlug, use LoweredCategoryName as default.
’’, -- Description, Empty as default.
GETUTCDATE(),
0, -- TotalEntities, 0 as default.
1, -- SortOrder of PostTags can always be 1.
1 -- State, 1 as Normal.
FROM
#TagsTable TT
WHERE
LOWER(TT.TagName) NOT IN
(
SELECT
C.
FROM
C WITH( UPDLOCK, HOLDLOCK )
WHERE
= @BlogId
AND = 2 -- Post Tag.
)
END
-- 4. Batch Get All Tag Ids from .
BEGIN
SELECT

FROM
C WITH(NOLOCK)
JOIN
#TagsTable TT
ON
C. = LOWER( TT.TagName )
WHERE
C. = @BlogId
AND C. = 2 -- Post Tag.
AND C. = 1 -- 1 as Normal status.
END
-- 5. Clear and drop Temp Table.
TRUNCATE TABLE
#TagsTable
DROP TABLE
#TagsTable
COMMIT TRANSACTION;
RETURN 1
END TRY
BEGIN CATCH
IF XACT_STATE() 《》 0
BEGIN
ROLLBACK TRANSACTION;
RETURN -1
END
END CATCH
END
GO
常见的解决方案

知道了什么是排序规则冲突,我们接下来分析冲突的解决方案,以数据库级别的排序规则为例,一般来说,解决方案有下面几种
把SQL实例删了重建 ——大多数情况下等于没说-_-|||
修改数据库的排序规则 ——参考阿牛兄的这篇文章
在T-SQL中使用COLLATE DATABASE_DEFAULT来解决冲突 ——接下来主要讨论这个
COLLATE DATABASE_DEFAULT

Collate XXX 操作可以用在字段定义或使用时,它会将字段定义或转换成XXX 的排序规则格式。而Collate Database_Default 则会将字段定义或转换成当前数据库的默认排序规则,从而解决冲突。
比如在下面的代码中便使用了Collate Database_Default 来解决字段在equal操作中的排序规则冲突:
Insert into Security.Report (Name)
Select C.Path From SSRS.Catalog C
Where C.Path Collate Database_Default Like @ReportPath + ’/%’
And C.Path Collate Database_Default Not In (Select Name From Security.Report R)
当然,在创建临时表时若对字段定义加上Collate Database_Default ,也可以方便地解决潜在的排序规则冲突,比如上一节中提到的存储过程,只要做如下修改即可。
-- 1. Create Temp Table.
CREATE TABLE #TagsTable
(
TagName NVARCHAR(64) COLLATE DATABASE_DEFAULT
)
结束语
***隐藏网址***

如果你还想了解更多这方面的信息,记得收藏关注本站。

collate数据库(mysql数据库中的collation如何修改)

本文编辑:admin

更多文章:


伪代码int什么意思(int在编程中是什么意思)

伪代码int什么意思(int在编程中是什么意思)

其实伪代码int什么意思的问题并不复杂,但是又很多的朋友都不太了解int在编程中是什么意思,因此呢,今天小编就来为大家分享伪代码int什么意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录int在编程中是什么意

2026年3月28日 13:00

线程池的参数有哪些(鱼刺线程池文本参数)

线程池的参数有哪些(鱼刺线程池文本参数)

大家好,线程池的参数有哪些相信很多的网友都不是很明白,包括鱼刺线程池文本参数也是一样,不过没有关系,接下来就来为大家分享关于线程池的参数有哪些和鱼刺线程池文本参数的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录鱼

2026年5月8日 15:15

width的动词(铅笔的英语单词怎么写)

width的动词(铅笔的英语单词怎么写)

大家好,关于width的动词很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于铅笔的英语单词怎么写的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录铅笔的英

2026年7月28日 20:30

substrate line什么意思(业务信函中subject line 是什么意思)

substrate line什么意思(业务信函中subject line 是什么意思)

大家好,关于substrate line什么意思很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于业务信函中subject line 是什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注

2026年1月11日 05:45

工作流技术有哪些(翼发云OA办公系统用的什么技术来实现可视化工作流的)

工作流技术有哪些(翼发云OA办公系统用的什么技术来实现可视化工作流的)

今天给各位分享翼发云OA办公系统用的什么技术来实现可视化工作流的的知识,其中也会对翼发云OA办公系统用的什么技术来实现可视化工作流的进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录翼发云OA办公系统用的什么技术

2025年8月2日 22:15

websever面试(Java Web的一些面试问题求解答)

websever面试(Java Web的一些面试问题求解答)

这篇文章给大家聊聊关于websever面试,以及Java Web的一些面试问题求解答对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录Java Web的一些面试问题求解答web前端的面试自我介绍解析Java Web的一些面试问题

2026年9月16日 18:15

下载新闻网站(请教批量下载网站新闻的方法)

下载新闻网站(请教批量下载网站新闻的方法)

本篇文章给大家谈谈下载新闻网站,以及请教批量下载网站新闻的方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录请教批量下载网站新闻的方法官网

2026年3月28日 05:15

javapattern的使用(javalist中@pattern不生效)

javapattern的使用(javalist中@pattern不生效)

“javapattern的使用”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看javapattern的使用(javalist中@pattern不生效)!本文目录javalist中@pattern不生效Java.util.re

2026年5月1日 11:30

servlet体系结构图(Servlet过滤器是什么)

servlet体系结构图(Servlet过滤器是什么)

大家好,关于servlet体系结构图很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Servlet过滤器是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2025年11月11日 17:00

shell编程讲解(shell在编程中的意思)

shell编程讲解(shell在编程中的意思)

其实shell编程讲解的问题并不复杂,但是又很多的朋友都不太了解shell在编程中的意思,因此呢,今天小编就来为大家分享shell编程讲解的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录shell在编程中的意思s

2026年1月21日 03:00

美国众议院议长是谁(美国众议院议长原来是谁)

美国众议院议长是谁(美国众议院议长原来是谁)

其实美国众议院议长是谁的问题并不复杂,但是又很多的朋友都不太了解美国众议院议长原来是谁,因此呢,今天小编就来为大家分享美国众议院议长是谁的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录美国众议院议长原来是谁美国前

2025年7月21日 12:45

java se development kit可以卸载吗(如何卸载java(TM) SE Development Kit 6 Update 43)

java se development kit可以卸载吗(如何卸载java(TM) SE Development Kit 6 Update 43)

本篇文章给大家谈谈java se development kit可以卸载吗,以及如何卸载java(TM) SE Development Kit 6 Update 43对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录如何卸载ja

2026年7月22日 02:15

python 提取字符串的某一部分(python 字符串如何取部分字符串,进行重新排列组合)

python 提取字符串的某一部分(python 字符串如何取部分字符串,进行重新排列组合)

本篇文章给大家谈谈python 提取字符串的某一部分,以及python 字符串如何取部分字符串,进行重新排列组合对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录python 字符串如何取部分字符串,进行重新排列组合python

2026年3月5日 03:15

c语言二维数组的调用(C语言二维数组的函数调用)

c语言二维数组的调用(C语言二维数组的函数调用)

大家好,c语言二维数组的调用相信很多的网友都不是很明白,包括C语言二维数组的函数调用也是一样,不过没有关系,接下来就来为大家分享关于c语言二维数组的调用和C语言二维数组的函数调用的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开

2025年12月23日 13:45

swiftkey(swiftkey语音输入国内能用吗)

swiftkey(swiftkey语音输入国内能用吗)

其实swiftkey的问题并不复杂,但是又很多的朋友都不太了解swiftkey语音输入国内能用吗,因此呢,今天小编就来为大家分享swiftkey的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录swiftkey语音

2025年10月7日 00:15

java 教程(Java的基础教程有什么)

java 教程(Java的基础教程有什么)

各位老铁们好,相信很多人对java 教程都不是特别的了解,因此呢,今天就来为大家分享下关于java 教程以及Java的基础教程有什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录Java的基础教程有什么怎么学习

2025年9月19日 13:45

navicat永久许可证(Navicat16.2用不了NavicatCracker破解,还有什么永久破解Navicat的方法吗)

navicat永久许可证(Navicat16.2用不了NavicatCracker破解,还有什么永久破解Navicat的方法吗)

大家好,如果您还对navicat永久许可证不太了解,没有关系,今天就由本站为大家分享navicat永久许可证的知识,包括Navicat16.2用不了NavicatCracker破解,还有什么永久破解Navicat的方法吗的问题都会给大家分析

2025年8月9日 19:30

什么是静态IP?静态ip什么意思

什么是静态IP?静态ip什么意思

本篇文章给大家谈谈静态ip,以及什么是静态IP对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录什么是静态IP静态ip什么意思静态ip是什么意思连接wifi使用静态 IP是什么意思,请用通俗的话解释一下,谢了静态ip是什么意思

2026年7月23日 12:30

改号系统源码(win10下edge怎么修改源代码)

改号系统源码(win10下edge怎么修改源代码)

大家好,改号系统源码相信很多的网友都不是很明白,包括win10下edge怎么修改源代码也是一样,不过没有关系,接下来就来为大家分享关于改号系统源码和win10下edge怎么修改源代码的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2026年7月15日 12:00

网站首页设计的要求(网站首页设计有哪些地方要注意)

网站首页设计的要求(网站首页设计有哪些地方要注意)

各位老铁们好,相信很多人对网站首页设计的要求都不是特别的了解,因此呢,今天就来为大家分享下关于网站首页设计的要求以及网站首页设计有哪些地方要注意的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录网站首页设计有哪些地

2025年12月15日 15:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索