Concaténer 2 nombres dans SQL Server

J'ai besoin d'une fonction pour concaténer 2 nombres dans SQL Server

par exemple

getuserid(3,333) = 3333 getuserid(8,5) = 8005 getuserid(2,11) = 2011 

Il devrait returnner le résultat basé sur la longueur du deuxième paramètre (comme le 3ème exemple)

J'ai essayé de le convertir en string et en utilisant des déclarations de cas je l'ai concaténé. Mais, je pense que cela peut être fait mathématiquement d'une manière plus efficace. Quelqu'un peut-il suggérer un moyen s'il vous plaît?

D'ici là, la sortie returnnée devrait être de type numérique.

Essaye celui-là –

 CREATE FUNCTION dbo.concat_num (@a INT, @b INT) RETURNS INT AS BEGIN RETURN CONVERT(INT, CONVERT(VARCHAR(25), @a) + REPLICATE('0', CASE WHEN LEN(@b) > 2 THEN LEN(@b) ELSE 3 END - LEN(@b)) + CONVERT(VARCHAR(25), @b)) END 

Sortie:

 ----------- 3333 ----------- 8005 ----------- 2011 ----------- 15555 

On dirait que ça va le faire:

 select num1 * 1000 + num2 

Pourquoi avez-vous besoin d'une fonction pour ce calcul simple?

Comme mentionné dans votre question

…. Il devrait returnner le résultat basé sur la longueur du deuxième paramètre …..

Cela signifie probablement que vous vouliez dire

 getuserid(3,333) = 3333 getuserid(8,5) = 85 getuserid(2,11) = 211 

J'ai utilisé LEN() sur le deuxième paramètre et la fonction Power() sur 10

 CREATE FUNCTION dbo.concat_num (@a INT, @b INT) RETURNS INT AS BEGIN RETURN @a * POWER(10,LEN(@b)) + @b END 

J'ai peu modifié la solution ci-dessus fournie par @Devrat, parce que je veux juste concaténer les valeurs plutôt que d'append 000 entre, et si le deuxième nombre est 0 il returnnera seulement le premier nombre

 Create FUNCTION dbo.concat_num (@a INT, @b INT) RETURNS INT AS BEGIN IF @b = 0 BEGIN RETURN @a END ELSE BEGIN RETURN CONVERT(INT, CONVERT(VARCHAR(2), @a) + CONVERT(VARCHAR(2), @b)) END RETURN 0 END