【问题标题】:find substrings in sql table using sql query使用 sql 查询在 sql 表中查找子字符串
【发布时间】:2014-03-17 19:44:25
【问题描述】:

我的 sql 表中有一个“名称”列。在我的 sql 查询中,我想获取列“名称”是我的输入字符串的子字符串的所有记录。

例如,用户输入“My name is Davivd”,然后我想获取 name 为 David 的所有记录。 P.S:用户可能会输入类似“Its David here”这样的内容。

谁知道请告诉我。谢谢

【问题讨论】:

  • 我认为 OP 不想要这个,他说用户会输入Its David here。我认为这是不可行的,除非你有办法知道用户输入的字符串的哪一部分实际上是他的名字。

标签: sql sql-server substring


【解决方案1】:

对此的简单看法是:

DECLARE @x VARCHAR(255)
SET @x = 'My name is David'
SELECT a FROM tablex WHERE @x LIKE '%' + tablex.name + '%'

这与@shortspider 的反应相反。

【讨论】:

    【解决方案2】:

    您的问题有点不清楚,但如果您有一个名称列,您可以使用CHARINDEX 函数将其作为任何字符串的一部分找到:

    例子:

    DECLARE @TABLE TABLE (ID INT IDENTITY(1,1), NAME VARCHAR(100))
    INSERT INTO @TABLE(NAME)
    SELECT 'DAVID' UNION ALL
    SELECT 'GOLIATH' UNION ALL
    SELECT 'DAVE' UNION ALL
    SELECT 'MARTIN'
    
    SELECT *
    FROM @TABLE
    WHERE CHARINDEX(NAME,'DID YOU EVER READ THE STORY ABOUT DAVID AND GOLIATH?') > 0
    
    SELECT *
    FROM @TABLE
    WHERE CHARINDEX(NAME,'MY FAVOURITE MOVIE DIRECTOR IS MARTIN SCORCESE. I LOVE HIS GLASSES.') > 0
    

    【讨论】:

      【解决方案3】:

      试试:SELECT * FROM table_name WHERE name LIKE '%David%'

      【讨论】:

      • 用户可以输入任何字符串,所以我们不知道字符串中的名称在哪里,您的查询将不起作用。
      猜你喜欢
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多