有没有办法在sqlite中进行重音/变音符号不敏感搜索?
谷歌搜索,我发现了这一点,但我真的不知道如何在C#中创建我的"校对功能".我正在尝试为Sqlite创建pt-br排序规则...
我有两个表,他们使用不同的排序规则.不允许从具有不同排序规则的表中连接列,例如,不允许使用以下SQL,
select table1column1 + table2column2 from ...
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何更改表的排序规则而不破坏表的数据?
乔治,提前谢谢
数据库的排序规则是什么用途?对于HTML UTF-8,我知道一点,比如显示其他语言类型.但是对于数据库呢?我正在使用latin-1(默认),我的朋友告诉我使用UTF代替.当我问为什么时,他们不知道并说其他人使用它.所以我在质疑校对真正做了什么?它会影响速度或类似的东西吗?
我在SQL Server 2008 R2 dev上,服务器默认排序规则是Cyrillic_General_CI_AS
执行
SSMSSELECT'éÉâÂàÀëËçæà'COLLATE Latin1_General_CS_AS
或
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI
Run Code Online (Sandbox Code Playgroud)
输出
为什么?
我正在向用户表(来自许多站点的许多用户)输入数据:
myisam default collation latin1_swedish....
将该数据导入到 innodb table utf8_general
我已经在username,site_id组合上放置了一个唯一的密钥,但这对于同一站点的2个用户来说是失败的:
user 1 dranfog,
user 2 drånfog
Run Code Online (Sandbox Code Playgroud)
如果我跑:
SELECT IF('å' = 'a', 'yep', 'nope');
Run Code Online (Sandbox Code Playgroud)
直接在目标数据库上使用utf8编码,我得到'yep'.
任何解决此问题的提示都非常受欢迎.我的印象是utf8会将这些视为不同的字符,但似乎并非如此.
有没有办法让Android上的SQLite使用自定义整理例程?
我知道SQLite的C接口可以做到这一点,所以我想我可以通过编写用于构建NDK的C代码来实现,但我真的更喜欢在更高级别上进行构建.
例如,我需要安排一些事情,以便对文本B-9进行排序B-29.默认的字母排序使它们以错误的方式进行.
我在tempdb中有临时表,在数据库中有一个表.当我用这个2表的联合构造查询时.有一个错误:
无法解决UNION操作中"Cyrillic_General_CI_AI"和"Cyrillic_General_CI_AS"之间的排序规则冲突.
drop table [sysdb].[##temp table];
create table [sysdb].[##temp table](a varchar);
insert into [sysdb].[##temp table] (a) values ('a'),('b');
select grade_name from [mybase].[DDS].[testtable]
union
select * from [sysdb].[##temp table];
Run Code Online (Sandbox Code Playgroud)
我已使用此查询在数据库中测试了我的排序规则参数:
SELECT DATABASEPROPERTYEX('mybase', 'Collation') as collation_dwh,DATABASEPROPERTYEX('tempdb', 'Collation') as collation_tempdb
Run Code Online (Sandbox Code Playgroud)
结果是数据库的整理是相同的:
collation_dwh | collation_tempdb
Cyrillic_General_CI_AI | Cyrillic_General_CI_AI
如何解决这个问题?
由于我的SQL Server 2012实例使用的collation(Latin1_General_CI_AS)与use(SQL_Latin1_General_CP1_CI_AI)中的某些DB不同,因此我使用与SQL Server实例不同的排序规则来评估更改数据库排序规则的可能风险.
我检索了数百个程序来执行此步骤.对我来说,不清楚的是要了解执行这样的行动是否存在某些限制或风险.
谢谢你的回复.
为什么以下SQL语句true在MySQL中返回?
SELECT 'SeP' = 's?p';
mysql> select 'SeP' = 's?p';
+----------------+
| 'SeP' = 's?p' |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我的数据库的字符集和整理如下.
mysql> select @@character_set_database, @@collation_database, @@collation_connection;
+--------------------------+----------------------+------------------------+
| @@character_set_database | @@collation_database | @@collation_connection |
+--------------------------+----------------------+------------------------+
| utf8mb4 | utf8mb4_general_ci | utf8_general_ci |
+--------------------------+----------------------+------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud) 我正在将数据库安装到客户端的服务器上.在服务器上设置的排序规则是SQL_Latin1_General_CP1_CS_AS,因此它区分大小写.
我正在安装的数据库使用排序规则级别SQL_Latin1_General_CP1_CI_AS,因此它不区分大小写.
我现在遇到的问题是存储过程中的所有变量必须区分大小写,否则会引发错误.
例:
Declare @Dimension varchar(45)
Set @dimension = 'Test'
Run Code Online (Sandbox Code Playgroud)
错误:
Must declare the scalar variable "@dimension".
Run Code Online (Sandbox Code Playgroud)
@dimension变量中的小写"d"使其被识别为完全不同的变量.
我可以更新数据库中的设置以忽略服务器的排序规则吗?
注意:我获得了在服务器级别更新排序规则的权限,因为它是测试服务器.但是,这是一个更复杂的过程.我正在寻找一种解决方法,而无需通过此链接中的步骤:
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]
/SQLCOLLATION=CollationName谢谢