如何在Propel query for Oracle中为列名添加别名?
我需要防止在对象字段表中插入重复项。用户可以在UI中输入此字段的输入(带空格/不带空格)以及字段名的大写/小写,例如:如何在Propel query for Oracle中为列名添加别名?,oracle,symfony,propel,Oracle,Symfony,Propel,我需要防止在对象字段表中插入重复项。用户可以在UI中输入此字段的输入(带空格/不带空格)以及字段名的大写/小写,例如: 1. test field 2. TestField 3. TEST FIELD 上述各项的任意组合。我应该通过删除带单词的空格来防止插入重复值。该检查仅用于在插入/更新之前检查现有值。但是我们存储用户给出的实际输入 我必须在Symfony中编写一个spreep查询,这相当于我运行以下Oracle select查询来检查是否存在相同的“字段名” `SELECT lower(R
1. test field
2. TestField
3. TEST FIELD
上述各项的任意组合。我应该通过删除带单词的空格来防止插入重复值。该检查仅用于在插入/更新之前检查现有值。但是我们存储用户给出的实际输入
我必须在Symfony中编写一个spreep查询,这相当于我运行以下Oracle select查询来检查是否存在相同的“字段名”
`SELECT lower(REPLACE(field_name, ' ', '')),
field_id
from object_fields
where field_name=lower('testfield');`
SYmfony/我尝试过的推进查询:
$fieldName = preg_replace('/\s+/', '', strtolower($fieldName));
$selectColumn = "lower(REPLACE( ObjFieldsPeer::FIELD_NAME,' ', ''))";
ObjFieldsQuery::create( )
->withColumn($selectColumn)
->filterByFieldName( $fieldName )
->findOne( );
它提供了以下Oracle SQL查询:
select OBJECT_FIELDS.FIELD_ID,
lower(REPLACE(OBJECT_FIELDS.FIELD_NAME, ' ', ''))
AS lowerREPLACEOBJECT_FIELDSFIELD_NAME, ' ', ''
FROM OBJECT_FIELDS
WHERE OBJECT_FIELDS.FIELD_NAME='testfield';
我得到的Oracle错误是“ORA-00972:标识符太长”
有人知道如何在spreep/Symfony中为列编写别名相同的查询吗
谢谢
Raj未经测试,但我认为这应该有效:
$fieldName = preg_replace('/\s+/', '', strtolower($fieldName));
$selectColumn = "lower(REPLACE( ObjFieldsPeer::FIELD_NAME,' ', ''))";
ObjFieldsQuery::create( )
->withColumn($selectColumn, 'your_alias')
->filterByFieldName( $fieldName )
->findOne( );
谢谢你的询问。它适用于一个用例。另外,我可以知道如何在where子句中使用replace函数吗?查询将类似于。。从OBJECT_FIELDS.FIELD_ID,lower(替换(OBJECT_FIELDS.FIELD_NAME,'','')中选择OBJECT_FIELDS.FIELD_ID,lower(替换(OBJECT_FIELDS.FIELDS_NAME,'','')作为lowerREPLACEOBJECT_FIELDS字段_NAME,'','',从OBJECT_FIELDS.FIELDS_NAME='testfield所在的对象;我现在已经有点不知所措了,有一段时间没看《推进》了——试着问一个新问题。