微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 SQL Server 中删除扩展的 ASCII 字符

如何解决如何从 SQL Server 中删除扩展的 ASCII 字符

所以试图删除所有扩展的 ascii 字符并在 ddl 中使用排序规则 sql_latin1_General_CP1253_CI_AI 但仍然得到 ascii 字符。有什么建议吗?

我在 sql 中有一个值存储为“àccõrd”,我希望它按照协议存储。当我尝试选择 àccõrd collat​​e sql_latin1_General_CP1253_CI_AI 时它可以工作,但是当我加载它时它仍然被加载为 àccõrd

解决方法

这里有两种方法可以实现您的目标...

第一种方法:定义具有特定排序规则的列,例如:

create table dbo.Foo (
  FooName varchar(50) collate SQL_Latin1_General_CP1253_CI_AI
);
insert dbo.Foo (FooName) values ('àccõrd');
select FooName from dbo.Foo;

产生的结果:

FooName
-------
accord

第二种方法:将文本插入表格时进行整理:

-- Display the SQL Server instance's "default collation," configured during setup.
-- e.g.: SQL_Latin1_General_CP1_CI_AS
select serverproperty('collation') as ServerCollation;

-- Display the current database's "default collation," configured in CREATE DATABASE.
-- e.g.: SQL_Latin1_General_CP1_CI_AS
select collation_name
from sys.databases
where [name]=db_name();

create table dbo.Bar (
  BarName varchar(50) --database default: collate SQL_Latin1_General_CP1_CI_AS
);
insert dbo.Bar (BarName) values ('àccõrd' collate SQL_Latin1_General_CP1253_CI_AI);
select BarName from dbo.Bar;

产生的结果:

BarName
-------
accord

注意:这些整理技巧仅适用于 charvarchar 数据类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。