2016-05-03 2 views

Antwort

2

MySql (richtig) sieht nicht innerhalb der Zeichenfolge, um zu sehen, dass es etwas enthält, das wie ein in der Liste aussieht.

Es sieht nur eine in Liste mit einem einzelnen Element, das eine Zeichenfolge ist. Sie erhalten eine implizite Umwandlung von string zu int, um diesen einzelnen Ausdruck zu konvertieren.

Aber anstatt das Vernünftigste, was zu tun und einen Fehler verursacht, da die Zeichenfolge "142,150,40,42,21,99,162,110,121" nicht aus der Ferne eine gültige ganzen Zahl ist es bei den ersten nicht numerischen Zeichen stoppt und so die Zeichenfolge wirft zu 142.

So wird Ihre Abfrage ausgewertet als in (142)

1

try this:

select 1 + "142,150,40,42,21,99,162,110,121"; 
+---------------------------------------+ 
| 1 + "142,150,40,42,21,99,162,110,121" | 
+---------------------------------------+ 
|         143 | 
+---------------------------------------+ 

In the manual, es heißt:

  • Um einen String in einen numerischen Wert in numerischer gegossen Kontext müssen Sie normalerweise nichts anderes tun, als den Zeichenfolgenwert zu verwenden, als wäre es eine Zahl

  • Wenn Sie eine Zeichenfolge in einer arithmetischen Operation verwenden, wird sie während der Ausdruckauswertung in eine Fließkommazahl konvertiert.

Ihre Zeichenfolge numified

Verwandte Themen