Dans ma table de base de données SQL Server 2K, il existe un champ de code postal varchar qui affiche la longueur de caractère incorrecte du code postal lorsqu'il encode un code postal avec des traits d'union numériques. Par exemple, pour les valeurs telles que ABC12-1234, elle émettrait une longueur correcte, c'est-à-dire 10, mais lorsque le code postal est quelque chose comme 21345-5, elle émet sa longueur à 5 au lieu de 7. Je me demande comment éviter cette typographie implicite. Des idées?Le catalogage implicite observé dans SQL Server 2000
Répondre
Je ne semblent reproduire ce - cet extrait fonctionne parfaitement sur SQL Server 2000:
CREATE TABLE ZipCodeTest(ID INT IDENTITY PRIMARY KEY, ZipCode VARCHAR(20))
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('ABC12-1234')
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('21345-5')
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('ABC')
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('32144')
Puis-je faire un SELECT sur cette table:
SELECT
ID, ZipCode, LEN(ZipCode)
FROM
ZipCodeTest
et obtenir la sortie suivante :
ID ZipCode LEN
1 ABC12-1234 10
2 21345-5 7
3 ABC 3
4 32144 5
Votre "cas de problème" (avec ID = 2) montre LEN(ZipCode) = 7
comme prévu.
Pouvez-vous nous montrer
- structure de votre table
- votre instruction SELECT qui renvoie les informations de longueur erronée ??
Donc, votre plainte est que si quelqu'un fait
INSERT INTO YourTable(ZipCode) VALUES(21345-5)
-à-dire qu'ils omettent les citations qu'il se traité comme
INSERT INTO YourTable(ZipCode) VALUES(21340)
et que vous voulez que cela soit évité et provoque une erreur, car de la distribution de int
à varchar
Ce comportement strict n'est pas possible dans aucun version de SQL Server pour le moment. Though it is a moderately highly voted request on the connect site.
Tous les codes postaux de votre environnement local doivent-ils contenir un caractère -
? Si c'est le cas, vous pouvez appliquer cet aspect avec une contrainte de vérification, sinon vous devrez simplement faire attention dans vos instructions d'insertion.
Les insertions provenant de votre application doivent être paramétrées de toute façon sur le bon type, donc je suppose que cela s'applique uniquement aux instructions d'insertion manuelles?
- 1. MARS dans SQL Server 2000
- 2. Subsums dans SQL Server 2000
- 3. TimeStamp dans SQL Server 2000
- 4. SQL Server 2000 FTP
- 5. Erreurs SQL Server 2000 Server
- 6. Déclencheurs SQL Server 2000
- 7. Idea SQL Server 2000
- 8. Deadlocks SQL Server (SQL Server 2000)
- 9. SQL Server ROW_NUMBER() sur SQL Server 2000?
- 10. Sql Server 2000 Sauvegarde
- 11. Paquets DTS, SQL Server 2000
- 12. SQL Server 2000 Dump Déclaration
- 13. Sql Server 2000 openrowset question
- 14. Sql server 2000 -Espace trouver
- 15. Problèmes avec sp_addlinkedserver dans SQL Server 2000
- 16. Recherche d'enregistrements orphelins dans SQL Server 2000
- 17. Table Diff dans SQL Server 2000
- 18. Lucene.NET avec SQL SERVER 2000
- 19. DBCC SQL Server 2000 sysindexkeys
- 20. avec JOIN SQL Server 2000
- 21. SQL Server 2000 et System.Transactions.TransactionScope()
- 22. LINQ2SQL et SQL Server 2000
- 23. Transposition Colonne dans SQL Server 2005/2000
- 24. Duplicates SQL Problème SQL SERVER 2000
- 25. SQL Server 2005 sur le serveur sql 2000
- 26. Performances de requête SQL Server 2000 vs SQL Server 2008
- 27. SQL Server 2008 réplication vers SQL Server 2000
- 28. Migration de SQL Server 2000 vers SQL Server 2008
- 29. SQL Server 2000 T-SQL: écriture dans MSMQ?
- 30. sécurité dans le serveur sql 2000
Comment obtenez-vous cette valeur de longueur? –
Ce que je perçois est que tandis que les champs de code postal encouters quelque chose comme ABC12-1234 il traite est comme chaîne de caractères et émet une longueur correcte ie 10 au contraire quand le champ a la valeur 21345-5 il calcule en interne à 21340 et sort la longueur 5. J'espère que je pourrais répondre à votre question. – Yatin
En d'autres termes, je peux insérer le code postal dis 21345-5 (sans guillemets simples) au champ de code postal de type de varchar et c'est ce que je veux éviter. Si la structure de la table est quelque chose comme mytable (code postal varchar (10)) alors insérer dans les valeurs mytable (12345-5) devrait renvoyer une erreur pour type-mismatch, ce qui n'est pas le cas. – Yatin