使用撇号,连字符,双大写的SQL名称搜索

时间:2017-03-30 08:31:10

标签: mysql

有一个带字母的搜索过滤器。

enter image description here

如果我点击“D' D'我希望过滤器正常工作然后显示所有艺术家的名字,如:

David McDonald
Alice Duncan
Daniel O'Neill
Beth Douglas-Bain

艺术家表格中有一列名称'它包含first,middle和surname,包括撇号,连字符和双大写。

我试过

SELECT * FROM `artist` WHERE `name` REGEXP BINARY 'D[a-z]'
然而,这并没有正常运作。

我只能使用来自' WHERE子句'的查询所以我不能使用SELECT中的查询。

一些问题的例子是:

  • 点击' O'但是O' Neill没有露面
  • 点击' B'那么道格拉斯 - 贝恩出现了,应该是' D'麦当劳也有同样的问题。

麦当劳,奥尼尔,道格拉斯 - 贝恩的姓氏使得查询不能正常运作,因为麦当劳和道格拉斯 - 贝恩有两个大写字母,所以当我点击D'时出现。 O' Neill有一个撇号和双重大写,我无法弄明白。

如果某位SQL专家可以帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:0)

试试这个

'(^|[^A-Za-z''])lettervalue'

其中lettervalue是所选字母

测试了以下名单并取得了成功。

Daniel Grass
Daniel House
Ronald O'House
Craig McHouse
Tina Dreamer
Orion Fantastic

根据需要,

'(^|[^A-Za-z''])O'拉动" Ronald O' House"和#34; Orion Fantastic",

'(^|[^A-Za-z''])H'退出" Daniel House" (但忽略了Craig McHouse)

'(^|[^A-Za-z''])M'拉出了#34; Craig McHouse"

答案 1 :(得分:-1)

试试这个:

select * from artist where name like '%D%' or name like '%d%';