T-SQL查找小写和大写的字符串

use*_*607 4 t-sql

我有一个包含多个表的数据库,我需要搜索数据库中的每一 varchar列,以查找同时包含大写和大写字符的列.

澄清:

如果一个列包含helLo列的名称应当由该查询返回,但如果列值仅包含两种helloHELLO则不会返回列的名称.

PM *_*7-1 7

让我们排除所有UPPER和所有LOWER,剩下的将是MIXED.

SELECT someColumn
FROM someTable
WHERE someColumn <> UPPER(someColumn) AND someColumn <> LOWER(someColumn) 
Run Code Online (Sandbox Code Playgroud)

编辑:

正如在评论中所建议并在此详细描述的那样,我需要指定区分大小写的排序规则.

SELECT someColumn
FROM someTable
WHERE someColumn <> UPPER(someColumn) AND 
      someColumn <> LOWER(someColumn) 
      Collate SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)


Ada*_*Dev 3

听起来您正在进行区分大小写的搜索,因此您需要对 There WHERE 子句使用区分大小写的排序规则。

例如,如果您的排序规则当前是不区分大小写的 SQL_Latin1_General_CP1_CI_AS,则可以使用以下命令编写区分大小写的查询:

SELECT SomeColumn
FROM dbo.SomeTable
WHERE SomeField LIKE '%helLo%' COLLATE SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)

在这里,COLLATE SQL_Latin1_General_CP1_CS_AS告诉它使用区分大小写的排序规则来执行过滤。