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

js81xvg6  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(472)

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

$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` .
k5ifujac

k5ifujac1#

可以删除下划线:

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

这个 ? 是参数占位符。我鼓励您使用参数,而不是使用查询字符串。
上面的内容可能比你想象的要多。
或者,可以转换为正则表达式:

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

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

相关问题