标签: collate

SQLite查询以非大小写敏感的字母顺序排列

我想要做的就是按字母顺序抓住这些东西并忽略大写字母.

db.rawQuery("SELECT " + catName + " FROM "+tableName+" ORDER BY "+catName+" ASC COLLATE NOCASE;", null);
Run Code Online (Sandbox Code Playgroud)

这是我上面使用的代码,但它总是给我一个SQLite异常,说COLLATE是一个语法错误.

android.database.sqlite.SQLiteException:near"COLLATE":语法错误:,同时编译:SELECT Artist FROM testTable COLLATE NOCASE ASC

sql sqlite android sql-order-by collate

64
推荐指数
2
解决办法
4万
查看次数

更改SQL Server中所有表的所有列的排序规则

我导入了一个数据库,其中包含一些数据,以便与另一个数

目标数据库具有排序规则Latin1_General_CI_AS,源数据库具有排序规则SQL_Latin1_General_CP1_CI_AS.

我确实将源数据库的排序规则更改为Latin1_General_CI_AS使用SQL Server Management Studio.但是里面的表格和列仍然是旧的整理.

我知道我可以使用以下方法更改列:

ALTER TABLE [table] 
ALTER COLUMN [column] VARCHAR(100) COLLATE Latin1_General_CI_AS
Run Code Online (Sandbox Code Playgroud)

但是我必须为所有表和内部的所有列执行此操作.

在我知道开始编写一个存储过程之前,它读取所有表并在所有类型的列中,varchar并在表和列游标循环中更改它们...

有没有人知道一个更简单的方法,或者是通过运行程序中所有表的脚本执行此操作的唯一方法?

sql-server database-design collate

47
推荐指数
5
解决办法
10万
查看次数

如何使用LIKE执行区分大小写的搜索?

我正在尝试查找包含大写6个或更多字母数字字符串的记录.一些例子:

PENDING  3RDPARTY  CODE27
Run Code Online (Sandbox Code Playgroud)

我正在使用以下声明:

SELECT Details
FROM MyTable
WHERE Details LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Run Code Online (Sandbox Code Playgroud)

这将返回包含任何6个或更多字母单词的所有记录,无论大小写如何.

我添加了一个COLLATE声明:

SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Run Code Online (Sandbox Code Playgroud)

这没有任何改变.无论如何,它仍会返回带有6个或更多字母单词的记录.

就像测试一样,我试过:

SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%pending%';

SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%PENDING%';
Run Code Online (Sandbox Code Playgroud)

这两种方法都有效,分别返回包含"待定"和"待定"的记录.所以问题似乎是LIKE克劳斯的模式匹配.

如何执行区分大小写的搜索?

pattern-matching collate sql-server-2008 sql-like

30
推荐指数
2
解决办法
3万
查看次数

规范化MySQL查询中的重音字符

我希望能够进行规范化重音字符的查询,例如:

é, è, and ê
Run Code Online (Sandbox Code Playgroud)

在使用'='和'like'的查询中,所有都被视为'e'.我有一行将用户名字段设置为' rené ',我希望能够将它与' rene '和' rené ' 匹配.

我试图用MySQL 5.0.8中的'collat​​e'子句来做这件事.我收到以下错误:

mysql> select * from User where username = 'rené' collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
Run Code Online (Sandbox Code Playgroud)

FWIW,我的表创建时:

CREATE TABLE `User` (
  `id` bigint(19) NOT NULL auto_increment,
  `username` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uniqueUsername` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=56790 DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

mysql sql utf-8 diacritics collate

16
推荐指数
3
解决办法
2万
查看次数

如何在SQL Server的JOIN中使用COLLATE?

我试图加入两个表,但我收到此错误:

消息468,级别16,状态9,行8无法解决等于操作中"SQL_Latin1_General_CP1_CI_AS"和"Latin1_General_CI_AS"之间的排序规则冲突.

这是我使用的代码:

 SELECT *

  FROM [FAEB].[dbo].[ExportaComisiones] AS f

  JOIN [zCredifiel].[dbo].[optPerson] AS p

  ON (p.vTreasuryId = f.RFC) COLLATE Latin1_General_CI_AS 
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,它强调了COLLATE.我不知道如何应用它.

sql-server join collate

16
推荐指数
2
解决办法
9万
查看次数

在CONCAT中使用Collat​​e

我试图在两列之间用空格连续排列并得到一个排序错误:

SELECT DISTINCT
    p.PERSON_ID,
    p.ID_NUMBER,
    CONCAT(p.FULLNAMES, CONCAT(' ', p.SURNAME)) AS NAME,
    o.ORG_NAME,
    w.WARD_DESCRIPTION AS WARD,
    ess.DESCRIPTION AS SECTOR
Run Code Online (Sandbox Code Playgroud)

在concat操作中无法解决"SQL_Latin1_General_CP1_CI_AS"和"Latin1_General_CI_AS"之间的排序规则冲突

我的数据库中两个违规列的排序规则是: Latin1_General_CI_AS

所以我试图将空白整理到这个整理,但我不知道如何做到这一点.我的尝试:

CONCAT(p.FULLNAMES, (CONCAT((COLLATE Latin1_General_CI_AS = ' '), p.SURNAME))) AS NAME,
Run Code Online (Sandbox Code Playgroud)

或者其他的东西?

sql-server concat collate sql-server-2012

14
推荐指数
2
解决办法
2万
查看次数

在Android SQLite中使用COLLATE - 在LIKE语句中忽略Locales

在Android中创建SQLite数据库时,我设置了数据库语言环境 - db.setLocale(new Locale("cz_CZ")).这是一个捷克语的地方.

SELECT语句起作用并考虑区域设置,例如:

SELECT * from table WHERE name='sctzy' COLLATE LOCALIZED 
Run Code Online (Sandbox Code Playgroud)

会找到条目'ščťžý'.

但使用LIKE将失败:

SELECT * from table WHERE name LIKE '%sctzy%' COLLATE LOCALIZED 
Run Code Online (Sandbox Code Playgroud)

没有返回任何行.

BTW.Android中没有java.text.Normalized类.我以为我可以用标准化的文本制作第二列,删除特殊字符,这些字符将用于搜索 - 但我缺少一个类或方法如何规范化String.

database sqlite android locale collate

13
推荐指数
1
解决办法
1万
查看次数

创建sqlite索引时COLLATE关键字的作用是什么?

根据sqlite3文档,

每个列名后面的COLLATE子句定义用于该列中文本条目的整理顺序.默认整理顺序是在CREATE TABLE语句中为该列定义的整理顺序.或者,如果未定义整理顺序,则使用内置BINARY整理顺序.

整理顺序有什么作用,什么是BINARY整理顺序?

sql sqlite indexing collate

10
推荐指数
2
解决办法
1万
查看次数

在临时表列TSQL中设置排序规则的正确方法

我有一个临时表,使用批量插入插入数据.但是,当我想将数据从临时表更新到普通表时,它会产生整理问题.我知道如何使用以下方法解决这个问题:

UPDATE RegularTable
SET r.Column1 = t.ColumnA
FROM RegularTable r INNER JOIN #TEMP t ON
r.Column1 COLLATE DATABASE_DEFAULT = 
t.ColumnA COLLATE DATABASE_DEFAULT
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法立即在临时表中设置排序规则,因此您不必在连接中使用排序规则?就像是:

CREATE TABLE #TEMP
Column1 varchar(255) COLLATE database_default,
Column2 varchar(60) 
Run Code Online (Sandbox Code Playgroud)

这是正确的编码,您是否必须为每个表或每列设置一次排序规则?如果在表格中设置了排序规则,那么您可以从连接中排除整理吗?

sql sql-server collate

10
推荐指数
1
解决办法
3万
查看次数

整理声明的SQL变量

我一直在看这个代码,下面转载,寻找非ASCII字符......

select line,
  patindex('%[^ !-~]%' COLLATE Latin1_General_BIN, Line) as [Position],
  substring(Line, patindex('%[^ !-~]%' COLLATE Latin1_General_BIN, Line), 1) as [InvalidCharacter],
  ascii(substring(line, patindex('%[^ !-~]%' COLLATE Latin1_General_BIN, Line), 1)) as [ASCIICode]
from staging.APARMRE1
where patindex('%[^ !-~]%' COLLATE Latin1_General_BIN, Line) > 0
Run Code Online (Sandbox Code Playgroud)

我只想告诉我,我想要声明一个变量,'%[^ !-~]%' COLLATE Latin1_General_BIN而不是每次都写出来,但是

declare @regex varchar(20) = '%[^ !-~]%' COLLATE Latin1_General_BIN;

select line,
  patindex(@regex, Line) as [Position],
  substring(Line, patindex(@regex, Line), 1) as [InvalidCharacter],
  ascii(substring(line, patindex(@regex, Line), 1)) as [ASCIICode]
from staging.APARMRE1
where patindex(@regex, Line) > 0
Run Code Online (Sandbox Code Playgroud)

只是不做同样的事情.我只是缺少一些语法?这不可能吗?

sql t-sql sql-server collate

9
推荐指数
1
解决办法
7139
查看次数