如何在Propel query for Oracle中为列名添加别名?

如何在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

我需要防止在对象字段表中插入重复项。用户可以在UI中输入此字段的输入(带空格/不带空格)以及字段名的大写/小写,例如:

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所在的对象;我现在已经有点不知所措了,有一段时间没看《推进》了——试着问一个新问题。