Android - 没有这样的排序规则:SQL_Latin1_General_CP1_CI_AS
Posted
技术标签:
【中文标题】Android - 没有这样的排序规则:SQL_Latin1_General_CP1_CI_AS【英文标题】:Android - no such collation sequence: SQL_Latin1_General_CP1_CI_AS 【发布时间】:2014-06-01 12:53:19 【问题描述】:我正在开发一个需要使用以下查询的 android 应用程序,
SELECT distinct AttributeValue.AttributeValueName as InventoryId
,WorkFlowTransaction.WorkFlowTransId
,Client.ClientName
,Project.ProjectName
,Product.ProductName
FROM WorkFlowTransaction
JOIN AttributeValue
ON WorkFlowTransaction.WorkflowTransId = AttributeValue.WorkflowTransId
JOIN Attribute
on Attribute.AttributeId = AttributeValue.AttributeId
JOIN Product
on Product.ProductId = WorkFlowTransaction.ProductId
JOIN Client
ON Client.ClientID=WorkFlowTransaction.ClientId
JOIN Project
on Project.ProjectID=WorkFlowTransaction.ProjectId
where AttributeValue.AttributeValueName
COLLATE SQL_Latin1_General_CP1_CI_AS not in (
Select LocationId
from BarcodeDetails
)
and Attribute.AttributeName = 'Inventory Id'
and WorkFlowTransaction.ClientId = 2
and WorkFlowTransaction.ProjectId = '44'
and WorkFlowTransaction.ProductId = '47'
and Attribute.IsDeleted ='0'
and AttributeValue.IsDeleted ='0'
and WorkFlowTransaction.IsDeleted = '0'
此查询在 SQL-Server
中运行良好。但在 android 中引发了 no such collation sequence: SQL_Latin1_General_CP1_CI_AS
异常。请帮助我给出您的想法或解决方案。
【问题讨论】:
你期待什么?它是 mssql(不是 sqlite)特定的排序规则。 我想要一个在android中运行的同等产品 你为什么需要它? 【参考方案1】:要了解排序规则是什么,请参阅以下问题:What does 'COLLATE SQL_Latin1_General_CP1_CI_AS' do?
latin1
使服务器使用 charset latin 1 处理字符串,基本上是 asciiCI
不区分大小写的比较,因此 'ABC' 将等于 'abc'AS
区分重音,所以 'ü' 不等于 'u'
在 SQLite 中没有直接替代它,Android SQLite 不公开安装您自己的自定义排序规则所需的 API。
根据您的数据和要求,您可以使用纯 COLLATE NOCASE
足够接近,它适用于 ASCII 字符,但不适用于完整的 Latin1 字符集。
【讨论】:
以上是关于Android - 没有这样的排序规则:SQL_Latin1_General_CP1_CI_AS的主要内容,如果未能解决你的问题,请参考以下文章