好的,这个问题可能是由于我对查询构建器帮助器方法的模糊了解,但对于我的生活,我找不到使用子字符串方法的正确方法。
我试图返回以指定的字母数字值开头的所有结果。下面的代码不会抛出任何错误,但它也不会返回任何结果。我已经搜索过Google,但显然几乎没有显示如何使用子字符串。我想在查询生成器中使用它,但我可能必须使用DQL或原始sql。
$qb->select('p', 't');
$qb->from('ContentParent', 'p');
$qb->join('p.titleCurrent', 't');
$qb->where(
$qb->expr()->eq($qb->expr()->substring('t.sortTitle', 0, 1), ':letter')
);
谢谢!
答案 0 :(得分:7)
SUBSTRING需要基于一个。
对于所有形式的SUBSTRING(),第一个字符的位置 从中提取子字符串的字符串被认为是 1。
使用Oracle:
SELECT SUBSTR('ABCDEFG',3,4) "Substring"
FROM DUAL;
Substring
---------
CDEF
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Person
WHERE LastName like 'Barl%'
ORDER BY LastName
您可以从这些示例中看到,他们也在使用基于单一的(但是,在给定1
时,Oracle会假设为0
。)
只需将substring
参数更改为't.sortTitle', 1, 1
即可正常使用。