【问题标题】:SQL case unsensitiveSQL 不区分大小写
【发布时间】:2015-07-13 14:53:00
【问题描述】:

你好,我有一个名为 NAME 的列的表,在这个列中我可以有这种类型的名称:名字大写和其他小写 (Jack),全名大写 (JACK),以及带空格的名称 (Jack) 或 (杰克)。

如何显示所有名称而不是所有类型的插孔?

我需要用IN语句搜索多个名字

我使用甲骨文

【问题讨论】:

  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?
  • 闻,闻...闻起来像作业;-)
  • 为什么需要in 声明?您正在尝试使用截断进行不区分大小写的搜索。根据您的 DBMS,select name from table where lower(name) like '%jack%'; 之类的内容更合适。
  • 如果我想放入一个内部连接?我的数据库是甲骨文

标签: sql uppercase


【解决方案1】:

假设 SQL Server:

SELECT Name FROM Table WHERE Name LIKE '%jack%'

【讨论】:

  • 我忘了一件事我需要用 IN 语句搜索多个名称
  • 这不会让他得到带有大写杰克的名字。在使用 LIKE 之前,您必须在 Name 中应用 ToLower() 或 ToUpper。
  • @Veverke - 他说 SQL Server,在 LIKE 语句中不区分大小写。
  • @Hogan:哦,很高兴知道。对不起西蒙,我的错。
【解决方案2】:
 SELECT Name 
 FROM Table 
 WHERE UPPER(Name) LIKE '%JACK%'

适用于所有 SQL。在 SQL Server 中,我认为 LIKE 不区分大小写,但它可能取决于配置设置和排序规则。

也许你需要

 SELECT Name 
 FROM Table 
 WHERE UPPER(TRIM(Name)) IN ('JACK','HOGAN','VICTOR')

(如果不使用 SQL Server,请将 TRIM(Name) 替换为 RTRIM(LTRIM(Name))。)

如果您有一个包含名称列表的表格,您可以这样做:

 SELECT Name
 FROM Table 
 JOIN NameTable ON UPPER(RTRIM(LTRIM(Table.Name))) = NameTable.Name

【讨论】:

  • 我告诉你如何使用 in。如果你有很多名字要搜索,你应该把它们放在一个表中。
  • Select name,A.valueA from tableA inner join tableB on valueA A = valueB and name in ('jack','fred') 我从一个 txt 文件中取的名字
  • @v3ctor,你真的不能用我的例子来让这个查询工作吗??哎呀
  • @v3ctor - 提示 LOWER(LTRIM(RTRIM(name))) in ('jack','fred')
  • 语句中的名称有时必须以第一个字符大写(jack,Fred,carl,Laurence)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2015-07-05
  • 2013-09-22
  • 2012-12-01
  • 2013-03-06
  • 2020-02-18
相关资源
最近更新 更多