On 08/15/2016 12:02 AM, [email protected] wrote:
Hi All,

I'm not sure whether I've done something wrong, hit an unsupported
version of SQL Server, or what.

I have a Person table in my SQL Server database that I'm reflecting via
`autoload`
|

classPerson(Base):
    __table__ =Table('Person',meta,autoload=True,autoload_with=engine)

|

The table has LastName and FirstName columns, but I want to search for
substrings in the concatenation of FirstName and LastName.  The
following query works direct against the SQLServer
|

SELECT *FROM dbo.PersonWHERE (FirstName+' '+LastName)LIKE '%ob Smi%'

|

Note that trying to use a `CONCAT` function returns the error.
|

SELECT *FROM dbo.PersonWHERE concat(FirstName+' '+LastName)LIKE '%ob Smi%'
*[S00010][195]'concat'isnota recognized built-infunctionname.**


string concatenation is available as an operator, the + sign will compile down to the concatenation operator itself (which is usually '||', I thought this was the case for SQL server also). assuming string concatenation operators still work on SQL server 2012 I'd forego the direct use of "concat"

matches = Person.query.filter(Person.FirstName + ' ' ' + Person.LastName).like(name_substring)).all()



*

|
It seems that CONCAT was added in SQLServer 2012 and later:
 https://msdn.microsoft.com/en-us/library/hh231515.aspx

Trying to replicate this query via SQLAlchemy, the following executes,
but generates invalid SQL including a call to CONCAT with the error below.
|

    matches =Person.query.filter(db.func.concat(Person.FirstName,'
',Person.LastName).like(name_substring)).all()

|

|
sqlalchemy.exc.ProgrammingError:(pyodbc.ProgrammingError)('42000','[42000]
[FreeTDS][SQL Server]Statement(s) could not be prepared. (8180)
(SQLExecDirectW)')[SQL:'SELECT Person_1.[LastName] AS
[dbo_Person_LastName], Person_1.[FirstName] AS
[dbo_Person_FirstName]\nFROM dbo.Person AS Person_1 \nWHERE
concat(Person_1.[FirstName], ?, Person_1.[LastName]) LIKE
?'][parameters:(' ','ob Smi')]
|


I don't see any mention in the documentation of how to indicate the SQL
Server version that queries should be compiled for.

Any suggestions?

Thanks,
Rob

--
You received this message because you are subscribed to the Google
Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to