gpt4 book ai didi

mysql - 如何检查 Mysql 数据库中是否存在精确的 slug(单次出现或多次出现)?

转载 作者:行者123 更新时间:2023-11-29 17:17:57 26 4
gpt4 key购买 nike

我正在创建新的slug。假设我的 slug 变量是 $slug = 'About-Us'

我有一个表,其中有一个名为 slug 的字段。 slug 列的值可以是这样的:-

  1. “关于我们”
  2. “关于我们-2”,
  3. “关于我们-3”,
  4. “关于我们-5”

如果出现重复的段,我们将在最后一个破折号后附加一个数值。

  1. “关于我们-2”,
  2. “关于我们-3”,
  3. “关于我们-5”

插入新数据时,我们需要检查 slug 是否以精确的形式存在,或者最后一个“-”破折号后面的部分是否是数字。

我想通过使用此查询来检查这一点

"SELECT COUNT(*) FROM table WHERE SLUG LIKE 'About-Us%'"

上面的查询有问题。如果像 "About-Uses" 这样的 slug 存在,那么它会返回计数 1。我们需要检查的是最后一个破折号后面的部分是否是数字。

此外,像 "About-Us-2-Know" 这样的 slugs 也必须被视为与 'About-Us' 不同,而 'About-Us-2 ''About-us-3' 必须被视为多次出现 'About-Us'

编辑:

这不是重复的。它不仅仅是检查最后一个字符作为数字。 检查最后一个破折号之前的字符串是否完全匹配以及最后一个破折号之后的字符串是否为数字

最佳答案

这是我仅使用 MySql 解决问题的方法。可能需要根据您的需求进行调整,但使用 SUBSTRING_INDEX 是我的主要解决方案。

/*
'About-Us'
'About-Us-2',
'About-Us-3',
'About-Us-5'
*/

DROP TABLE IF EXISTS `bleach`;
DROP TABLE IF EXISTS `bleach2`;

CREATE TABLE bleach (slug VARCHAR (255) NOT NULL);

INSERT INTO bleach SELECT 'About-Us';
INSERT INTO bleach SELECT 'About-Us-2';
INSERT INTO bleach SELECT 'About-Us-3';
INSERT INTO bleach SELECT 'About-Us-5';
INSERT INTO bleach SELECT 'About-Us-6-extra';
INSERT INTO bleach SELECT 'About-Us-NoMatch';


-- About us match
CREATE TABLE bleach2
SELECT slug, SUBSTRING_INDEX(slug,'-',2) AS about_us,
SUBSTRING_INDEX(slug,'-',-1) AS first_numeric,
SUBSTRING_INDEX(SUBSTRING_INDEX(slug,'-',-2),'-',1) AS second_numeric
FROM bleach;

SELECT * FROM bleach2;

-- All but About-Us-NoMatch should return
SELECT * FROM bleach2 WHERE about_us='About-Us' AND
(first_numeric IN ('1','2','3','4','5','6','7','8','9') OR second_numeric IN ('1','2','3','4','5','6','7','8','9'))
OR second_numeric='About';

关于mysql - 如何检查 Mysql 数据库中是否存在精确的 slug(单次出现或多次出现)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com