sql >> Database >  >> RDS >> Mysql

Ontsnappen aan een schuine streep in een SQL-naam? Het kan worden ontsnapt, maar SQL gelooft dat het meerdere kolommen zijn

In SQL Server kunnen identifiers worden gescheiden met vierkante haken, bijvoorbeeld

SELECT [gallons/units] ...

In MySQL kunnen identifiers worden gescheiden met behulp van backticks, bijv.

SELECT `gallons/units` ...

(OPMERKING:als MySQL SQL_MODE bevat ANSI_QUOTES , dan worden dubbele aanhalingstekens behandeld als scheidingstekens voor identifiers, vergelijkbaar met de manier waarop Oracle dubbele aanhalingstekens verwerkt; zonder die instelling worden dubbele aanhalingstekens behandeld als scheidingstekens voor letterlijke tekenreeksen. Met ANSI_QUOTES inclusief SQL_MODE , "gallons/units" wordt geïnterpreteerd als een identifier (kolomnaam). Zonder ANSI_QUOTES , zal MySQL het zien als een letterlijke tekenreeks, alsof het tussen enkele aanhalingstekens staat.)

VERVOLG:

Voor zover een fout "operand should contain only 1 column(s)" , dat is meestal een probleem met de semantiek van zoekopdrachten, niet met ontsnappende ID's.

Een subquery in de SELECT-lijst kan slechts één enkele expressie retourneren, dit zou bijvoorbeeld een fout opleveren:

Query: SELECT 'foo' , ( SELECT 'fee' AS fee, 'fi' AS fi )

Error Code: 1241
Operand should contain 1 column(s)


  1. Cakephp haalt informatie op uit database

  2. Lijst<int> toevoegen aan een mysql-parameter

  3. ADO.Net SQLCommand.ExecuteReader() vertraagt ​​of loopt vast

  4. PHP 7.0 ODBC-stuurprogramma voor Windows