Tabela, dla której nie mam kontroli nad schematem, zawiera kolumnę zdefiniowaną jako varchar (50), która przechowuje unikalne identyfikatory w formacie „a89b1acd95016ae6b9c8aabb07da2010” (bez łączników)
Chcę przekonwertować je na uniqueidentifiers w SQL w celu przekazania do .Net Guid. Jednak następujące wiersze zapytania nie działają dla mnie:
select cast('a89b1acd95016ae6b9c8aabb07da2010' as uniqueidentifier)
select convert(uniqueidentifier, 'a89b1acd95016ae6b9c8aabb07da2010')
i skutkuje:
Msg 8169, poziom 16, stan 2, wiersz 1 Konwersja nie powiodła się podczas konwersji z ciągu znaków na unikalny identyfikator.
Te same zapytania używające łączonego unikalnego identyfikatora działają dobrze, ale dane nie są przechowywane w tym formacie.
Czy istnieje inny (wydajny) sposób konwersji tych ciągów na unikalne identyfikatory w języku SQL? - Nie chcę tego robić w kodzie .Net.
sql
sql-server-2005
uniqueidentifier
granat
źródło
źródło
Odpowiedzi:
źródło
To byłaby przydatna funkcja. Zauważ też, że używam STUFF zamiast SUBSTRING.
źródło
Twój varchar col C:
źródło
źródło
Jeśli twój ciąg zawiera znaki specjalne, możesz go zaszyfrować do md5, a następnie przekonwertować na identyfikator guid / uniqueidentifier.
źródło
Podany identyfikator guid ma nieprawidłowy format (identyfikator podany .net).
źródło