Une table pour laquelle je n'ai aucun contrôle sur le schéma contient une colonne définie comme varchar (50) qui stocke les identificateurs uniques au format 'a89b1acd95016ae6b9c8aabb07da2010' (pas de tirets)
Je veux les convertir en identificateurs uniques en SQL pour les passer à un .Net Guid. Cependant, les lignes de requête suivantes ne fonctionnent pas pour moi:
select cast('a89b1acd95016ae6b9c8aabb07da2010' as uniqueidentifier)
select convert(uniqueidentifier, 'a89b1acd95016ae6b9c8aabb07da2010')
et aboutir à:
Msg 8169, niveau 16, état 2, ligne 1 La conversion a échoué lors de la conversion d'une chaîne de caractères en uniqueidentifier.
Les mêmes requêtes utilisant un identificateur unique avec trait d'union fonctionnent correctement, mais les données ne sont pas stockées dans ce format.
Existe-t-il un autre moyen (efficace) de convertir ces chaînes en identificateurs uniques en SQL. - Je ne veux pas le faire dans le code .Net.
sql
sql-server-2005
uniqueidentifier
grenade
la source
la source
Réponses:
la source
Cela ferait une fonction pratique. Notez également que j'utilise STUFF au lieu de SUBSTRING.
la source
votre varchar col C:
la source
la source
Si votre chaîne contient des caractères spéciaux, vous pouvez la hacher en md5, puis la convertir en guid / uniqueidentifier.
la source
Le guide fourni n'est pas au format correct (.net fourni guid).
la source