Comment convertir varchar en entier dans la procédure stockée SQL Server?
J'ai besoin d'écrire une procédure stockée qui obtient chaîne. Chaque caractère dans la chaîne doivent être converties en int
type et de la conversion d'un type à être insérée dans la table.
- Pourriez-vous montrer un exemple de ce que l'entrée ressemblerait, et ce qui doit être enregistré dans la base de données pour cela? Êtes-vous juste de passage dans un certain nombre dans un char que vous voulez convertir à un nombre entier?
- que fais-tu si loin?
- Je veux passer de la chaîne de virgule delimetrom pour Stocker de la Procédure. Par exemple: "1,2,4'
- Mise à jour de ma réponse avec le code. Donner un coup de feu, devrait être ce que vous cherchez.
Vous devez vous connecter pour publier un commentaire.
La table de nombres solution que j'ai posté plus sur cette question sera votre la solution la plus efficiente. Imprimer balle avant chaque phrase + nouvelle ligne après chaque phrase SQL patche code une fois que je suis à la maison
Modifier
L'unité de base de travail est la fonction table. Vous pourriez avoir entendu parler TVF et comment ils se sucent dans SQL Server, mais qui se rapporte à la multi-déclaration types. Inlines sont beaux comme l'optimiseur peut faire sens et de ne pas faire de terribles plans.
dbo.StringSplit
renvoie une seule colonne (varchar) le tableau avec les valeurs de split et reposant sur les délimiteur. Vous pouvez couper les lignes de code nécessaires (tables dérivées L0 à L5) si vous avez déjà une table de nombres ou rapide de générateur de nombres dans vos données. Je suppose que vous n'avez pas. La technique d'utilisation d'un les numéros de table pour diviser les données n'est pas la mienne, mais j'ai confiance en SQL sommités qui ont fait l'analyse.Vous avez demandé un proc j'ai donc fourni
dbo.StringSplitToInts
à respecter mais tout ce qu'il fait c'est de l'appel de la fonction TABLE avec les paramètres appropriés. Vous pouvez extraire l'instruction select et jeté dans le code en ligne ou partout où vous en avez besoin.Comment sur l'écriture d'un fichier UDF (http://vadivel.blogspot.com/2011/10/how-to-split-delimited-string-values-in.html) pour diviser la chaîne délimitée puis en l'appelant au sein de votre Procédure Stockée.
de mon esprit : ( pas testé)
à convertir :
de diviser les caractères dans le tableau d'entiers :
Vous pouvez utiliser une expression de table commune récursive pour générer une liste de positions de caractères dans la chaîne:
Utilisation de XML
Essayez ceci: