首页 > 解决方案 > 小写 select 的结果并在另一个 select 语句中查找它

问题描述

我有一个选择语句

SELECT EmployeeID 
FROM ApplicationStatus 
LEFT JOIN Employee ON EmployeeID = email 
WHERE role <= 2 
GROUP BY EmployeeID

它返回一堆员工输入的电子邮件。它可以是大写、小写或混合大小写。我不知道,也不允许修改数据。

SELECT CustomerID, EventType, EventDateTime, Comments, EmployeeID 
FROM ApplicationStatus 
WHERE LOWER(EmployeeID) IN LOWER(result from above statement) 
ORDER BY EventDateTime;

我觉得我很接近,但我不知道需要什么才能使它们都变成小写(或大写)。我正在使用 SQL Server 2019

标签: sql-server

解决方案


正如@Stu 和@Larnu 的评论中提到的:如果您正在处理不区分大小写的排序规则,那么您不需要调用Lower()您的比较,即被HELLO视为等于hello.

但是,如果您的排序规则区分大小写,那么您就快到了!

Lower()可以应用于单个标量值。

IN Lower(<SELECT statement>)正在尝试将其应用于set,但这是行不通的。

SELECT CustomerID
     , EventType
     , EventDateTime
     , Comments
     , EmployeeID 
FROM   ApplicationStatus
WHERE  Lower(EmployeeID) IN (SELECT Lower(EmployeeID) FROM your_other_query)
ORDER
   BY EventDateTime
;

推荐阅读