-1
votes

Pourquoi est-ce que je reçois toujours une erreur en essayant de convertir Varcharne en Int?

J'essaie de convertir ces données dans ma base de données en Int en fonction du code ci-dessous d'un autre fil. Comme je suis assez nouveau sur SQL, je voulais juste essayer de convertir la colonne "ID Web" pour comprendre le code et ne pas avoir trop d'erreurs.

 contenu de base de données

J'utilise le code suivant, mais obtenez toujours une erreur: xxx

quand Je cours cela, je reçois cette erreur:

msg 213, niveau 16, état 1, ligne 4
Le nom de la colonne ou le nombre de valeurs fournies ne correspondent pas la définition de la table.

Je suis un peu confus car je référencie toujours la même table que dans la requête. Que devrais-je me référencer ici?


2 commentaires

Tagez votre question avec la base de données que vous utilisez. En outre, votre exemple de code a plusieurs instructions. Lequel provoque l'erreur?


Vous créez une table à l'aide de Sélectionnez / dans avec quatre colonnes, puis utilisez un Insérer avec une seule colonne. Chose curieuse, ça. Y a-t-il vraiment des guillemets (") dans les données? Mis à part: avez-vous vérifié la gamme de int ?


4 Réponses :


3
votes

Vous devriez simplement être capable de faire: xxx pré>

pour votre code, vous souhaitez une mise à jour code> code>, pas un insérer code>. Vous n'avez pas besoin d'une table temporaire. DO: P>

-- remove double quotes
update [db].[desktop-order-data] d
    set ["Web ID"] = replace(["Web ID"], '"', '');

-- check that the resulting values are convertible
select *
from db].[desktop-order-data] d
where try_cast(["Web ID"] as int) is null and ["Web ID"] is not null;

-- if the above query returns no rows, then

update [db].[desktop-order-data]
    set ["Web ID"] = cast(["Web ID"] as int);


0 commentaires

1
votes

Le plage de int est:

-2 ^ 31 (-2 147 483 648) à 2 ^ 31-1 (2 147 483 647)

Votre adresse Web est de 10 chiffres et commencez par 4 - ils ne vont pas correspondre.

Vous pouvez essayer bigint à la place.


0 commentaires

0
votes

Vous ne pouvez pas installer un numéro sur l'ordre de 4363155167 dans int , qui passe de -2147483648 à 2147483647. Pouvez-vous utiliser bigint ici?


0 commentaires

0
votes

Vous obtenez cette erreur car il existe plus d'une colonne dans [Desktop-Order-Data] et que vous essayez d'insérer une colonne seulement 1, sans spécifier la colonne cible. Changez simplement votre instruction insertion à:

INSERT INTO [db].[desktop-order-data] ([Web ID])
SELECT CAST(["Web ID"] as int)
FROM #tmp


0 commentaires