【问题标题】:SQL find part of stringSQL查找字符串的一部分
【发布时间】:2018-01-20 12:48:11
【问题描述】:

我遇到了以下问题: 我有一个表'students',列有:'id_student'、'name'和'surname'。 然后我得到一个包含全名的变量(例如:'James Bond') 我需要进行查询以选择 'id_student' 其中 'name' 和 'surname' 匹配全名。

我尝试了多种方式,例如:

SELECT id_student FROM students WHERE name+' '+surname LIKE full_name

但它不起作用。有什么想法吗?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: php sql string phpmyadmin web


【解决方案1】:

您的代码应该在+ 用于字符串连接的数据库中工作。 LIKE 很好,但 = 似乎足够了:

SELECT id_student
FROM students
WHERE CONCAT(name, ' ', surname) = full_name;

请注意,意外字符和拼写上的微小差异会导致比较失败。

【讨论】:

    【解决方案2】:

    MySQL 不支持使用加号进行字符串连接,至少默认情况下不支持。相反,我们可以使用CONCAT 函数。你想要的LIKE 表达式是:

    full_name LIKE 'James%Bond'
    

    这里我们想要任何以James 开头并以Bond 结尾的记录。

    SELECT id_student
    FROM students
    WHERE full_name LIKE CONCAT(name, '%', surname);
    

    【讨论】:

      【解决方案3】:

      也许您应该尝试以下方法:

      SELECT id_student 
      FROM students
      WHERE CONCAT_WS(" ", name, surname) 
      LIKE full_name
      

      CONCAT_WSCONCAT 是 MySQL 连接字符串的函数。前者允许你定义一个分隔符,在你的情况下是一个空格。

      【讨论】:

      • 这个答案需要解释。仅代码答案在 StackOverflow 上的价值很低。请以教育为目的进行编辑。
      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多