Mam poniżej zapytanie i muszę przesyłać id
dovarchar
Schemat
create table t9 (id int, name varchar (55));
insert into t9( id, name)values(2, 'bob');
Co próbowałem
select CAST(id as VARCHAR(50)) as col1 from t9;
select CONVERT(VARCHAR(50),id) as colI1 from t9;
ale nie działają. Proszę zasugeruj.
Odpowiedzi:
Będziesz musiał
cast
lubconvert
jakoCHAR
typ danych, nie mavarchar
typu danych, na który możesz rzutować / konwertować dane:Zobacz następującą instrukcję SQL - w akcji - w witrynie SQL Fiddle :
Oprócz faktu, że próbujesz przekonwertować dane na niepoprawny typ, składnia, której używałeś,
convert
była niepoprawna.convert
Funkcja wykorzystuje następujące gdzieexpr
jest twoja kolumna lub wartość:lub
Twoje pierwotne zapytanie miało odwrotną składnię.
źródło
concat()
do konwersji niekoniecznie jest tak intuicyjne. Wolałbym, żeby mój kod był jasny, a to po prostu nie ma sensu.Otrzymujesz to, ponieważ
VARCHAR
nie jest to prawidłowy typ do rzutowania. Zgodnie z dokumentacją MySQL ( http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast ) możesz przesyłać tylko do:Myślę, że najlepszym rozwiązaniem jest użycie
CHAR
.źródło
tak
jest postgresql, ale mySql na to nie pozwala!
skrót w mySql:
źródło
Nie mam MySQL, ale są RDBMS (między innymi Postgres), w których można wykorzystać hack
Concatenate dokonuje niejawnej konwersji.
źródło
Rozwiązałem problem z porównaniem całkowitej
varchar
kolumny z kolumną xawhere CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name
źródło
posługiwać się :
źródło
Odpowiem na to ogólnie i bardzo wdzięczny powyższym współpracownikom.
Używam MySQL na MySQL Workbench. Miałem podobny problem, próbując połączyć a
char
iint
razem przy użyciuGROUP_CONCAT
metody. Podsumowując, zadziałało dla mnie to:powiedzmy, że masz
char
„c” iint
„i”, więc zapytanie wygląda następująco:...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...
źródło
Powinien móc również zrobić coś takiego:
źródło