SQL从搜索结果的开头排除“The”

SQL从搜索结果的开头排除“The”,sql,Sql,我试图从列中值的开头排除“A”和“The”。我正在搜索以字母“A”开头的艺术家,如: AND artist LIKE LOWER('A%') AND artist NOT LIKE LOWER('A %') 问题是这将给我以“A%”开头的艺术家,而不给我以“A%”开头的艺术家,但它也将排除以“A%”开头的艺术家 如果某个乐队决定给自己命名为“苹果”,他们将被排除在我的搜索之外。如何在不排除“A%”的情况下执行此查询 提前谢谢! 杰伊 我希望这是一个爱好或小db,因为LIKE语句对性能不太友好

我试图从列中值的开头排除“A”和“The”。我正在搜索以字母“A”开头的艺术家,如:

 AND artist LIKE LOWER('A%') AND artist NOT LIKE LOWER('A %')
问题是这将给我以“A%”开头的艺术家,而不给我以“A%”开头的艺术家,但它也将排除以“A%”开头的艺术家

如果某个乐队决定给自己命名为“苹果”,他们将被排除在我的搜索之外。如何在不排除“A%”的情况下执行此查询

提前谢谢! 杰伊

我希望这是一个爱好或小db,因为LIKE语句对性能不太友好


我希望这是一个爱好或小型数据库,因为LIKE语句对性能不太友好。

这是一个常见且麻烦的问题,通常通过使用第二个字段来解决,该字段包含以滚石形式显示的艺术家名称,旁边是滚石显示的名称。对前者执行搜索,但使用后者显示结果

但是,如果您被现有的数据所困扰,您需要以下信息:

AND UPPER(artist) LIKE 'A%'
AND ( UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %') )

这是一个常见且麻烦的问题,通常通过使用第二个字段来解决,该字段包含滚石形式的艺术家名称,以及滚石的显示名称。对前者执行搜索,但使用后者显示结果

但是,如果您被现有的数据所困扰,您需要以下信息:

AND UPPER(artist) LIKE 'A%'
AND ( UPPER(artist) LIKE 'A A%' OR NOT (UPPER(artist) LIKE 'A %') )

如果您可以控制数据库结构,特别是如果这是一个大型数据库,则只需添加一个SearchArtister列,该列包含搜索中出现的艺术家姓名或用于排序,可能会更加有益。这样,您可以显示全名,但按可搜索名称排序:

按SearchArtister选择艺术家表格顺序


这样一来,滚石乐队将出现在Steppenwolf之前的列表中…

如果您可以控制数据库结构,特别是如果这是一个大型数据库,则只需添加一个SearchArtister列,其中包含搜索中出现的艺术家姓名或用于排序,可能会更加有益。这样,您可以显示全名,但按可搜索名称排序:

按SearchArtister选择艺术家表格顺序


这样滚石乐队就会出现在草原狼之前的名单上……

Jay,欢迎来到Stack Overflow。当你问一个问题时,最好用你正在使用的数据库来标记它,并提供输入和输出的示例。而你的问题的答案是你不能。你如何在名字的开头区分苹果和其他的A的用法?要么要删除首字母A,要么不删除。Jay,欢迎使用堆栈溢出。当你问一个问题时,最好用你正在使用的数据库来标记它,并提供输入和输出的示例。而你的问题的答案是你不能。你如何在名字的开头区分苹果和其他的A的用法?要么你想删除首字母A,要么你不想。我可以看到另一个Richard在我写作时回答。我必须承认,我不明白为什么在OP或那个答案中,谓词的RHS要用小写。我可以看到另一个Richard在我写作时回答。我必须承认,我不明白为什么在OP或那个答案中,谓词的RHS要用小写。