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 处理字符串,基本上是 ascii CI 不区分大小写的比较,因此 'ABC' 将等于 'abc' AS 区分重音,所以 'ü' 不等于 'u'

在 SQLite 中没有直接替代它,Android SQLite 不公开安装您自己的自定义排序规则所需的 API。

根据您的数据和要求,您可以使用纯 COLLATE NOCASE 足够接近,它适用于 ASCII 字符,但不适用于完整的 Latin1 字符集。

【讨论】:

以上是关于Android - 没有这样的排序规则:SQL_Latin1_General_CP1_CI_AS的主要内容,如果未能解决你的问题,请参考以下文章

Android:SQLite 中的自定义排序规则

SQLite3 数据库 - 没有这样的排序规则错误

SQL Server 案例/排序规则问题

如何在 Android 应用程序的 SQLite 中创建排序规则?

MySQL 视图 - 排序规则的非法混合

MySQL 排序规则