gpt4 book ai didi

MySQL查询以选择全部或部分搜索字符串

转载 作者:行者123 更新时间:2023-11-29 03:35:09 25 4
gpt4 key购买 nike

我正在编写一个脚本来搜索国际象棋的开局位置。

我需要构建一个查询,该查询将根据某些 PGN 代码或 PGN 中移动中的移动进行选择。

例子:

  1. 1.e4 2.e5
  2. 1.e4 2.e5 Nc6
  3. 1.e4 2.e5 Nc6 3.Bb5
  4. 1.e4 2.e5 Nc6 3.Bb5 a6
  5. 1.e4 2.e5 Nc6 3.Bb5 a6 4.Ba4 Nf6
  6. 1.e4 2.e5 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.Nc3

现在,我想做的是搜索“1.e4 2.e5 Nc6 3.Bb5 a6”并从上面获取第 1 - 4 行。

我知道 LIKE 调用,但据我了解,它会选择所有这些行。

抱歉,我没有尝试。我不知道什么 MySQL 功能可以实现这一点。

在表中,每一行都有一个 VARCHAR(200) 列,其中包含上面的一行。

此外,如果有人知道用于根据某些 PGN 搜索 ECO 代码的 MySQL dB,请随时发布链接。

最佳答案

假设您有一个表“chess”,其中包含一个字段“moves”varchar(200),我使用以下查询来设置您的测试数据:

create table chess (moves varchar(200));
insert into chess values ("1.e4 2. e5");
insert into chess values ("1.e4 2. e5 Nc6");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5 a6");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5 a6 4. Ba4 Nf6");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5 a6 4. Ba4 Nf6 5.Nc3");

现在尝试以下查询:

SELECT moves FROM chess 
WHERE "1.e4 2. e5 Nc6 3. Bb5 a6" LIKE concat(moves, "%");

请注意 like 比较如何使用左侧的常量和右侧的实际字段。

在相关说明中,varchar(200) 是不够的。请考虑增加它或使用文本数据类型。

关于MySQL查询以选择全部或部分搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23233991/

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