我们正在使用WSO2 DSS并实施员工搜索API。该服务提供类似Google搜索的内容,当您开始输入匹配的结果时,会返回。
为此,我们必须在SQL语句中使用LIKE子句。如果我们尝试以下面的方式定义查询
方法1
SELECT列 来自EMPTable WHERE FirstName LIKE':pName%'
并尝试仅传递服务URL中的字符串,它将无法识别该参数。它将传递“:pName”以查询到DB。
如果我们在下面定义
方法2
SELECT Eumns FROM EMPTable WHERE FirstName LIKE:pName
并从查询字符串传递'SomeText%',这可以正常工作。第二种方法是一种糟糕的实现方式,因为百分比标记和引号往往会被编码并弄乱服务调用。
方法3
从EMPTable选择列WHERE FirstName LIKE'?%'
此方法可以按我的意愿工作。问题是让我说我想要像
这样的东西选择列来自EMPTable WHERE FirstName LIKE'?%'或LastName LIKE'?%'
然后我必须定义两个输入参数并要求服务用户将相同的输入传递给两个不同的参数。
我们有什么方法可以实现方法1?或者对于方法3,我们可以给出相同的参数两个序数?
答案 0 :(得分:2)
您可以在SQL语句中使用Concat函数,例如CONCAT(:pName,'%')
答案 1 :(得分:0)
我通常使用REPLACE函数,例如:REPLACE(:pname,'*','%')。所以在URI中我们可以像往常一样在搜索引擎中使用*。
我认为每个SQL方言都有REPLACE函数