2012-10-10 13 views
13

Ist es möglich, so etwas zu tun? Im Wesentlichen möchte ich ein int in einen String umwandeln und den String für einen Join verwenden. Achten Sie auf die %t1.id%int zu string in mysql

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

Antwort

0

Sie dies tun können:

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

Achten Sie auf CAST(t1.id AS VARCHAR(10)).

2

Ausprobieren CONCAT

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

mit Sie CONCAT verwenden könnte, und das numerische Argument wird in die entsprechende binäre String-Form umgewandelt.

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 

Mit Concat wie vorgeschlagen ist noch besser, wenn

24

Wenn Sie eine Spalte "col1" genannt, die int ist, werfen Sie es String wie folgt aus:

CONVERT(col1,char) 

z.B dies ermöglicht es Ihnen, ein int-Wert enthält einen anderen Wert (hier 9) wie folgt zu überprüfen:

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

zu konvertieren Nummer, die Sie verkohlen die Abfrage verwenden können:

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

Diese Frage ist 5 Jahre alt, und es gibt bereits ähnliche Antworten in diesem Thread. Was fügt deine Antwort zu diesem Thread hinzu? – GrumpyCrouton