Używam Sybase i dokonuję wyboru, który zwraca mi kolumnę o nazwie „iftype”, ale jej typ to int i muszę przekonwertować na varchar. Kiedy próbuję dokonać wyboru bez funkcji konwersji, pojawia się ten błąd:
Kod błędu 257, stan SQL 37000: niejawna konwersja z typu danych „VARCHAR” na „INT” jest niedozwolona. Użyj funkcji CONVERT, aby uruchomić to zapytanie.
Nie wiem jak zaimplementować tę funkcję CONVERT
. Czy ktoś może mi pomóc, proszę?
sql
select
type-conversion
sybase
Murilo
źródło
źródło
Odpowiedzi:
Użyj funkcji konwersji.
źródło
VARCHAR
to,INT
ale odpowiadam na jego pytanie, a nie na komunikat o błędzie.varchar
gdzieint
jest potrzebny. Aby nam pomóc, musisz napisać swoją rzeczywistą instrukcję SQL.varchar(11)
w przypadku, gdy liczba jest dużą liczbą ujemną.Użyj
STR
funkcji:Argumenty
float_expression
Jest wyrażeniem przybliżonego liczbowego (zmiennoprzecinkowego) typu danych z kropką dziesiętną.
długość
To całkowita długość. Obejmuje to przecinek dziesiętny, znak, cyfry i spacje. Domyślnie jest to 10.
dziesiętny
Jest liczbą miejsc po prawej stronie przecinka dziesiętnego. liczba dziesiętna musi być mniejsza lub równa 16. Jeśli liczba dziesiętna jest większa niż 16, wynik jest skracany do szesnastu miejsc po prawej stronie przecinka.
źródło: https://msdn.microsoft.com/en-us/library/ms189527.aspx
źródło
STR()
powinna być poprawną odpowiedzią, jest prostsza i mniej podatna na błędy niż alternatywy.Możesz użyć
CAST
funkcji:źródło
W rzeczywistości nie musisz używać STR ani konwertuj. Wystarczy wybrać „xxx” + LTRIM (1) wykonuje zadanie. Być może LTRIM używa Convert lub STR pod maską.
LTRIM eliminuje również potrzebę podawania długości i zwykle domyślna wartość 10 jest wystarczająca do konwersji liczby całkowitej na ciąg znaków.
źródło
CONVERT(DATA_TYPE , Your_Column)
jest składnią metody CONVERT w SQL. Z tej funkcji konwersji możemy przekonwertować dane kolumny, która znajduje się po prawej stronie przecinka (,), na typ danych po lewej stronie przecinka (,) Zobacz poniższy przykład.źródło