在mysql中查找具有常用词的字符串

在mysql中查找具有常用词的字符串,mysql,Mysql,我使用的是mysql,我有两个表 emp(id int, name varchar, dept_id int) dept(id int, name varchar) 我想让员工受到以下限制: 员工姓名与他/她的部门名称至少有一个常用词 解决方案可以是select语句或存储过程?然而,任何解决办法都是受欢迎的 SELECT * FROM emp INNER JOIN dept ON emp.dept_id = dept.id WHERE emp.name LIKE CONCAT('%', dep

我使用的是mysql,我有两个表

emp(id int, name varchar, dept_id int)
dept(id int, name varchar)
我想让员工受到以下限制: 员工姓名与他/她的部门名称至少有一个常用词

解决方案可以是select语句或存储过程?然而,任何解决办法都是受欢迎的

SELECT
*
FROM
emp
INNER JOIN dept ON emp.dept_id = dept.id
WHERE
emp.name LIKE CONCAT('%', dept.name, '%')
这将为您提供所有以部门名称命名的员工。但是,如果员工姓名列是prename姓氏,则这是糟糕的数据库设计,并且实现“至少一个常用词”限制会有点困难。要么通过将名称分成两列来更改DB模式,要么必须使用函数

  • substring()
  • substring\u index()
  • length()
拆分名称等。这会变得难看。阅读更多关于这些函数的信息

无论如何,你自己试试看,否则你学不到。这不是一个“为我做所有的工作”的网站,当你至少展示一些研究成果时,会有更多的人愿意帮助你。祝你好运

这将为您提供所有以部门名称命名的员工。但是,如果员工姓名列是prename姓氏,则这是糟糕的数据库设计,并且实现“至少一个常用词”限制会有点困难。要么通过将名称分成两列来更改DB模式,要么必须使用函数

  • substring()
  • substring\u index()
  • length()
拆分名称等。这会变得难看。阅读更多关于这些函数的信息

无论如何,你自己试试看,否则你学不到。这不是一个“为我做所有的工作”的网站,当你至少展示一些研究成果时,会有更多的人愿意帮助你。祝你好运。

emp.name
使用并创建搜索字符串。这是你的电话号码

选择emp.id,
emp.name emp_name,
部门名称emp中的部门名称
加入部门
其中emp.dept\u id=dept.id
及
部门名称regexp
CONCAT('([[:]|[[::]]);
使用并从
emp.name
创建搜索字符串。这是你的电话号码

选择emp.id,
emp.name emp_name,
部门名称emp中的部门名称
加入部门
其中emp.dept\u id=dept.id
及
部门名称regexp
CONCAT('([[:]|[[::]]);
select emp.id,
       emp.name emp_name, 
       dept.name dep_name from emp
join dept
where emp.dept_id=dept.id
      AND

      dept.name regexp 
        CONCAT('([[:<:]]',
               REPLACE(
                   TRIM(emp.name),
                   ' ',
                   '[[:>:]]|[[:<:]]'
               ),
               '[[:>:]])');