2012-10-10 14 views
13

Czy można zrobić coś takiego? Zasadniczo chcę rzucić int w ciąg i użył ciąg na join. Należy zwrócić uwagę na %t1.id%int do napisu w mysql

select t2.* 
from t1 
join t2 on t2.url='site.com/path/%t1.id%/more' 
where t1.id > 9000 

Odpowiedz

0

Można to zrobić:

select t2.* 
from t1 
join t2 on t2.url = 'site.com/path/' + CAST(t1.id AS VARCHAR(10)) + '/more' 
where t1.id > 9000 

zwrócić uwagę na CAST(t1.id AS VARCHAR(10)).

2

Spróbuj używając CONCAT

CONCAT('site.com/path/','%', CAST(t1.id AS CHAR(25)), '%','/more') 
7

Można użyć CONCAT i numeryczny argument jest konwertowany na jego odpowiednik binarnej postaci strun.

select t2.* 
from t1 join t2 
on t2.url=CONCAT('site.com/path/%', t1.id, '%/more') where t1.id > 9000 
2
select t2.* 
from t1 join t2 on t2.url='site.com/path/%' + cast(t1.id as varchar) + '%/more' 
where t1.id > 9000 

Korzystanie concat jak sugeruje to nawet lepiej, choć

24

Jeśli kolumna o nazwie "col1", które jest int, oddasz go do ciągów tak:

CONVERT(col1,char) 

na przykład ten pozwala sprawdzić wartość int jest zawierający inną wartość (tutaj 9) tak:

CONVERT(col1,char) LIKE '%9%' 
-1

przekonwertować liczbę char można użyć zapytania:

select CAST(id as CHAR(10)) from table; 
+1

To pytanie ma 5 lat, i są już podobne odpowiedzi do twojego w tym wątku. Co twoja odpowiedź dodaje do tego wątku? – GrumpyCrouton