一个字符串出现在另一个字符串中

Occurrence of a string inside another string

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

$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。我的问题是该列不包含该特定字符串,只包含它的一部分。

Image of sql table

那么有没有办法 "search / look" for GiM1_0 并得到 'GiM10_Integrated_testbed1'。不删除 _?也许有办法查看是否找到了某些 GiM1_0?他们都有 GiM1.

您可以删除下划线:

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

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

以上内容可能比您预期的要多一些。

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

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

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