0

我有一个使用个性化 URL 的系统(即 JohnSmith.MyWebsite.com)。在我的数据库中,这些值存储在“purl”列中。

如果从现在起六个月后,我需要将另一个 john smith 放入我的系统,我只需在他的名字中添加一个 1,这样他的 purl 就变成了 JohnSmith1.MyWebsite.com。

我的数据库变得如此之大,以至于手动检查它是一个实时消费者。所以,我想制作一个快速应用程序,我可以在其中输入姓名,然后检查数据库以返回我应该添加到末尾的数字。

我如何使用 mysql 搜索 JohnSmith[ANY NUMBER].MyWebsite.com 是否存在,而不会对像 JohnSmithson1234.MyWebsite.com 这样的 purl 产生积极影响?

所以基本上,我需要名称和域完全匹配,但需要获取使用的最新数字,以便我可以添加 1。

4

3 回答 3

0

您可以将其他字段添加到数据库中,其中包含每个子域的创建次数

例如

JohnSmith.MyWebsite.com - 5

这意味着您必须创建 JohnSmith6.MyWebsite.com,并在创建后将字段更新为

JohnSmith.MyWebsite.com - 6

或者你可以像其他用户建议的那样做'order by purl DESC',但如果你使用这种方法,请将索引添加到purl字段。

于 2013-05-09T20:07:50.490 回答
0

Sql Server 允许 [0-9] 匹配 0-9 中的一位数字。您可能想使用

约翰史密斯[0-9]%.MyWebsite.com

允许更多的数字(尽管这也会匹配 johnsmith123fooledyou.MyWebsite.com 之类的东西)

于 2013-05-09T20:01:59.403 回答
0

MySQL 不会像您要求的那样进行正则表达式搜索。但是,您可以在应用程序逻辑中轻松执行此操作。做这样的事情:

SELECT * FROM table WHERE purl LIKE 'JohnSmith%';

然后在您的应用程序中循环查看结果,看看是否有任何带有数字的 purl 列。

此外,由于 DNS 不区分大小写而 MySQL 不区分大小写,因此您最好将 purl 列中的所有内容都小写。您可能有时会搜索 johnSmith,但 JohnSmith 在数据库中,您将没有结果。

编辑:

显然 MySQL 确实允许正则表达式搜索。要获得最高数字的,请添加“ORDER BY purl DESC LIMIT 1”

于 2013-05-09T20:02:20.163 回答