【问题标题】:how to find this pattern in sql server?如何在 sql server 中找到这种模式?
【发布时间】:2012-07-08 11:52:59
【问题描述】:

如何在 sql server 的表中找到这样的模式。

我有这样的表格。

ST CLAIR, TERESA
JR VISH, DALVI
JACK RIDER
JR JK, SMITH

我想找到遵循此模式ST CLAIR, TERESA 的行,因此它将返回 3 行,如下所示。

ST CLAIR, TERESA
JR VISH, DALVI
JR JK, SMITH

查询

select * from table
where column like ?  

【问题讨论】:

  • 什么模式...?请多描述一下。两个词,逗号,另一个词?
  • @chx 两者都是不同的问题。
  • 很难说没有你想要什么。 % %, % 将匹配 100 200, 300。要匹配 words,您需要正则表达式。

标签: sql sql-server sql-server-2008 sql-like


【解决方案1】:

也许您正在寻找包含空格字符的模式:[column] LIKE '% %, %'

或者,如果您只关心逗号,请使用 LIKE '%,%'

【讨论】:

  • LIKE '% %, %' 将起作用 - % % 用于获取空格, % 用于逗号和后缀。
【解决方案2】:

你是说这个吗?

select * from table where column like '% %, %'  

你可以这样测试:

WITH Foo (datacol)
AS( SELECT *
    FROM (  VALUES  ('ST CLAIR, TERESA'),
                    ('JR VISH, DALVI'),
                    ('JACK RIDER'), 
                    ('JR JK, SMITH') 
                    ) AS F (datacol))
SELECT datacol
FROM Foo where datacol like '% %, %';

它会给你你正在寻找的结果:

 ST CLAIR, TERESA
 JR VISH, DALVI
 JR JK, SMITH

【讨论】:

    【解决方案3】:

    按照 Luxspes 的建议,您可以使用 '% %, %' 来过滤数据,也可以使用 parsename 来获取结果

    Declare @Sample table
    (word varchar(255))
    
    Insert into @Sample
    values 
    ('ST CLAIR , TERESA'),('JR VISH, DALVI'),('JACK RIDER'),('JR JK, SMITH')
    
    Select word from @Sample
    where parsename(replace(word,',','.'),2) is not null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-30
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 2022-12-06
      • 2017-06-06
      相关资源
      最近更新 更多