gpt4 book ai didi

c# - 如何确定连接的数据库是否区分大小写

转载 作者:行者123 更新时间:2023-11-30 17:43:19 26 4
gpt4 key购买 nike

我需要以编程方式 (C#) 确定连接的数据库(可以是 Oracle 11g 或 Sql Server 2008 以上版本)是否已设置为区分大小写,因此我知道何时比较两个字符串(一个从数据库中检索) , 用户输入的)是否进行区分大小写的比较。

这可能吗?如果可以,我该怎么做?

TIA

最佳答案

你可以只使用 caseselect

SELECT CASE WHEN 'A' = 'a' THEN 'Insensitive' ELSE 'Sensitive' END

以上对于整个数据库 session 来说是非常通用的。更具体地说,您必须深入了解每个 DBMS 的数据库配置。

以下检查特定于 Oracle 区分大小写的配置:

SELECT CASE WHEN COUNT(*) = 2 THEN 'Insensitive' ELSE 'Sensitive' END
FROM NLS_SESSION_PARAMETERS
WHERE (PARAMETER = 'NLS_COMP' AND VALUE = 'LINGUISTIC')
OR (PARAMETER = 'NLS_SORT' AND VALUE = 'BINARY_CI')

以下检查不同级别的特定 SQL Server 排序规则:

-- Server level
SELECT CASE WHEN SERVERPROPERTY('COLLATION') LIKE '%_CI_%' THEN 'Insensitive' ELSE 'Sensitive' END

-- Database level
SELECT CASE WHEN DATABASEPROPERTYEX('AdventureWorks', 'Collation') LIKE '%_CI_%' THEN 'Insensitive' ELSE 'Sensitive' END

-- Column level
SELECT CASE WHEN COLLATION_NAME LIKE '%_CI_%' THEN 'Insensitive' ELSE 'Sensitive' END
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
AND COLUMN_NAME = @column_name

这对于检查不区分大小写的排序规则来说并不详尽,但基于 SELECT name, description FROM::fn_helpcollat​​ions(),它似乎相当不错。

SQL Server 归类引用(如 OP 评论所述)

关于c# - 如何确定连接的数据库是否区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com