2016-08-12 9 views
12

Zostałem zapytany, co zwróci poniższe proste zapytanie.Dane wyjściowe dodawania liczby całkowitej i łańcucha znaków w SQL Server

Select 5 + '4' 

Jako, 4 jest typem łańcucha, oczekuję, że zapytanie wygeneruje błąd. Stwierdziłem, że się mylę, przetestowałem, a wynik wynosił 9. Jak zwraca sumę?

+6

Jest konwertowany na liczbę, a błąd występuje tylko w przypadku niepowodzenia. –

+9

Należy pamiętać, że jest to zachowanie specyficzne dla produktu. (ANSI SQL na to nie pozwala.) – jarlh

+1

Od operacji dodawania "4" zostanie dodane do 5 i tak dalej. Teraz 5 jest pierwszym operandem i określa jego typ na int. Chociaż następny operand jest ciągiem znaków, próbuje go przekonwertować na typ pierwszego operandu i ponieważ jest w stanie dodać oba i daje wynik 9. jeśli drugi operand zawierał nieliczbową konwersję znaków, to się nie powiedzie, a otrzymasz błąd. –

Odpowiedz

5

Int będzie miał niejawna konwersja jednak mieć trochę zabawy z nim i spróbuj

Select 5 + '4.0' 
+0

to dziwny serwer sql nie robi tego. zmień 5 na 5.0 i zobacz. –

Powiązane problemy