当前位置: 首页 > 面试题库 >

比较字符串结尾,使用RIGHT,LIKE或其他方式的最佳方法?

司徒骞尧
2023-03-14
问题内容

我需要将字符串的结尾与存储过程中可能结尾的列表进行比较。这将被称为很多,大约有10-15个候选结局。在这一点上,仅代码解决方案比创建专用于此的表更为可取。会是这样的:

IF (ENDSWITH(@var, 'foo') OR
    ENDSWITH(@var, 'bar') OR
    ENDSWITH(@var, 'badger') OR
    ENDSWITH(@var, 'snake'))
(
)

我正在寻找速度和可维护性方面的最佳方法。我认识的候选人是

  • 正确,到目前为止,我最喜欢的是,但这意味着我必须对字符串长度进行硬编码,因此容易出错。这也意味着多次剪切源字符串。

    IF ((LEN(@var) >= 3 AND RIGHT(@var, 3) = 'foo')) OR ...
    
  • 像,可能较慢,但较干净

    IF (@var LIKE '%foo') OR ...
    
  • CHARINDEX,因为它搜索整个字符串,所以很可能较慢

  • SUBSTRING,很可能等同于RIGHT,而且丑陋得多

  • SQLCLR创建我自己的ENDSWITH,它可能很快

我可能不知道还有更好的方法。你怎么认为?


问题答案:

为SQL优化此功能的最佳方法可能是将REVERSE字符串值存储在另一个已建立索引的列中,并使用LEFT或LIKE搜索其左侧。



 类似资料:
  • 问题内容: 我正在尝试优化在JavaScript中对字符串进行二进制搜索的函数。 二进制搜索要求您知道键是枢轴还是枢轴。 但这需要JavaScript中的两个字符串比较,这与同类语言不同,后者具有返回三个值(小于,等于,大于)的函数。 JavaScript中是否有这样的本机函数可以返回三进制值,以便在二进制搜索的每次迭代中只需要一个比较? 问题答案: 您可以使用该方法。

  • 本文向大家介绍VBA 使用Right或Right $获取字符串中最右边的3个字符,包括了VBA 使用Right或Right $获取字符串中最右边的3个字符的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我需要选择一个字段以几个不同的前缀之一开头的行: 在Oracle或SQL Server中使用SQL的最佳方法是什么?我正在寻找类似以下语句的内容(不正确): 或者 编辑:我想看看如何通过在一个SELECT语句中提供所有前缀,或将所有前缀存储在帮助器表中来完成此操作。 前缀长度不固定。 问题答案: 将前缀表与实际表连接将在SQL Server和Oracle中都可以使用。

  • 本文向大家介绍php比较相似字符串的方法,包括了php比较相似字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php比较相似字符串的方法。分享给大家供大家参考。具体分析如下: 这里通过php的similar_text函数比较两个字符串的相似性。 希望本文所述对大家的php程序设计有所帮助。

  • 我在Kathy Sierra的书中读到,当我们使用new操作符创建String时,比如String s=new String(“abc”),因为我们使用了new关键字,Java将在普通(非池)内存中创建一个新的String对象,s将引用它。此外,字面上的“ABC”将被放置在池中。 intern()表示,如果String pool已经包含一个字符串,则返回池中的字符串;否则,将String对象添加到

  • 问题内容: 例如,如果我要比较字符串“ Hello”和“ World”。 怎么知道Hello大于World? 我唯一能想到的是,也许它使用ASCII表作为参考? 谢谢您的帮助! 问题答案: 它按 字典顺序 比较两个字符串。在String API中 检查此处。 如果两个字符串不同,那么它们要么在某个索引处具有不同的字符(这是两个字符串的有效索引),要么它们的长度不同,或者两者都不同。如果它们在一个或