0

我想知道是否有一种简单的方法可以在另一个字符串中查找一个字符串的出现。我正在使用这个查询:

$nameId = "SELECT 
`testresults`.`id` AS TRid, requirementId, TestCaseId, TestSuiteCollectionId, TestSuiteId, TestSuiteCollectionName, `testcaserequirement`.`nameId` AS `Requirement`
FROM
testresultrequirementlink
    LEFT JOIN
`testresults` ON `testresultrequirementlink`.`testresultId` = `testresults`.`id`
LEFT JOIN
`testsuitecollection` ON `testresults`.`TestSuiteCollectionId` = `testsuitecollection`.`id`
LEFT JOIN
`testcaserequirement` ON `testresultrequirementlink`.`requirementId` = `testcaserequirement`.`id`
WHERE `TestSuiteCollectionName` LIKE '%".$checkfileName[0]."%'
GROUP BY `testresultrequirementlink`.`requirementId`;";

$checkfileName[0]将在 if 语句中设置,其中设置为GiM1_0. 我的问题是该列不包含该特定字符串,仅包含其中的一部分。

sql表图片

那么有没有办法“搜索/查找”GiM1_0并获取'GiM10_Integrated_testbed1'. 不删除_?也许有一种方法可以查看是否GiM1_0找到了一些?他们都有GiM1

4

1 回答 1

0

您可以删除下划线:

where replace(TestSuiteCollectionName, '_', ') LIKE concat('%', ?, '%')

?一个参数占位符。我鼓励您使用参数而不是修改查询字符串。

以上内容可能比您想要的更多。

或者,您可以转换为正则表达式:

where TestSuiteCollectionName regexp replace(?, '_', '_?')

问号是_可选的。这是对您问题的最狭隘的回答。

于 2020-06-09T13:41:42.700 回答