दिलचस्प पोस्ट
हाईचर्च – रेड्रा () बनाम न्यू हाईचर्च.चार्ट MySQL – SQL_BIG_SELECTS सिग्नल आर सर्वर पर सत्र का उपयोग नहीं करता है बूटस्ट्रैपिंग को अभी भी बाहर समर्थन की आवश्यकता है Google मानचित्र एपीआई v3: मैं मार्कर आइकन कैसे गतिशील रूप से बदलूं? आप asp.net mvc 3 और c # का उपयोग कर कुकीज़ को कैसे साफ़ करते हैं? जावा: स्टेटिक क्लास? मैं जावा में एक regex के साथ दोहराए हुए अक्षर कैसे पा सकता हूँ? एक .net फ़नक <T> को एक शुद्ध अभिव्यक्ति में परिवर्तित करना <Func <T >> जावा निरर्थक जांच करें कि .equals () के बजाय == का उपयोग क्यों करें फ्लेक्स लेक्सर के लिए स्ट्रिंग इनपुट क्या HTML5 में अपना खुद का html टैग बनाने का एक तरीका है? जांचें कि कोई तत्व एक सरणी में मौजूद है या नहीं कैसे vlookup करने के लिए और आर में (जैसे Excel में) भरें? फोनगैप – नेविगेटर.एप.बैकहैतियात () HTML बैक बटन पर काम नहीं कर रहा है

कैसे एक स्ट्रिंग एक अद्वितीय पहचान है की जांच करने के लिए?

क्या अद्वितीय पहचानकर्ता (एसक्यूएल सर्वर) के लिए IsDate या IsNumeric के बराबर है? या कुछ समान है (सी #) TryParse?

अन्यथा मुझे अपना काम लिखना होगा, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मैं पहिया को फिर से नहीं बदल रहा हूं।

जिस परिदृश्य को मैं कवर करने की कोशिश कर रहा हूं वह निम्नलिखित है:

SELECT something FROM table WHERE IsUniqueidentifier(column) = 1 

Solutions Collecting From Web of "कैसे एक स्ट्रिंग एक अद्वितीय पहचान है की जांच करने के लिए?"

SQL सर्वर 2012 TRY_CONVERT(UNIQUEIDENTIFIER, expression) साथ यह सब बहुत आसान बना देता है

 SELECT something FROM your_table WHERE TRY_CONVERT(UNIQUEIDENTIFIER, your_column) IS NOT NULL; 

एसक्यूएल सर्वर के पूर्व संस्करणों के लिए, मौजूदा उत्तर कुछ बिंदुओं को याद करते हैं जिसका अर्थ है कि वे स्ट्रिंग्स से मेल नहीं खा सकते हैं जो कि SQL सर्वर वास्तव में बिना किसी शिकायत के लिए UNIQUEIDENTIFIER को UNIQUEIDENTIFIER या अभी भी अमान्य कास्ट त्रुटियों को समाप्त कर सकता है।

एसक्यूएल सर्वर GUID को स्वीकार करता है या तो इस में {} या इसके बिना लपेटता है।

साथ ही यह स्ट्रिंग के अंत में बाह्य अक्षर को अनदेखा करता है। SELECT CAST('{5D944516-98E6-44C5-849F-9C277833C01B}ssssssssss' as uniqueidentifier) और SELECT CAST('5D944516-98E6-44C5-849F-9C277833C01BXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' as uniqueidentifier) उदाहरण के लिए सफल होता है

सबसे मूलभूत collations के तहत LIKE '[a-zA-Z0-9]' मिलान वर्णों को समाप्त करेगा जैसे कि À या Ë

अन्तर्निहित में अन्तर्निहितता के परिणामस्वरूप पंक्तियों का निर्वाह करने के बाद, मामले की अभिव्यक्ति में कास्ट का प्रयास करना महत्वपूर्ण है क्योंकि पंक्तियों को WHERE द्वारा फ़िल्टर किए जाने से पहले कास्ट हो सकता है।

तो (उधार @ r0d30b0y के विचार ) थोड़ा अधिक मजबूत संस्करण हो सकता है

 ;WITH T(C) AS (SELECT '5D944516-98E6-44C5-849F-9C277833C01B' UNION ALL SELECT '{5D944516-98E6-44C5-849F-9C277833C01B}' UNION ALL SELECT '5D944516-98E6-44C5-849F-9C277833C01BXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' UNION ALL SELECT '{5D944516-98E6-44C5-849F-9C277833C01B}ssssssssss' UNION ALL SELECT 'ÀD944516-98E6-44C5-849F-9C277833C01B' UNION ALL SELECT 'fish') SELECT CASE WHEN C LIKE expression + '%' OR C LIKE '{' + expression + '}%' THEN CAST(C AS UNIQUEIDENTIFIER) END FROM T CROSS APPLY (SELECT REPLACE('00000000-0000-0000-0000-000000000000', '0', '[0-9a-fA-F]') COLLATE Latin1_General_BIN) C2(expression) WHERE C LIKE expression + '%' OR C LIKE '{' + expression + '}%' 

मेरा नहीं, यह ऑनलाइन पाया … सोचा कि मैं हिस्सा लेता हूं।

 SELECT 1 WHERE @StringToCompare LIKE REPLACE('00000000-0000-0000-0000-000000000000', '0', '[0-9a-fA-F]'); 
 SELECT something FROM table1 WHERE column1 LIKE '[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]'; 

अद्यतन करें:

… लेकिन मैं @ r0d30b0y के उत्तर में दृष्टिकोण को बहुत पसंद करता हूं:

 SELECT something FROM table1 WHERE column1 LIKE REPLACE('00000000-0000-0000-0000-000000000000', '0', '[0-9a-fA-F]'); 

मुझे कुछ भी नहीं पता है जो आप "बॉक्स से बाहर" का उपयोग कर सकते हैं – आपको इसे अपने दम पर लिखना होगा, मुझे डर है।

यदि आप कर सकते हैं: इसे सी # लाइब्रेरी के अंदर लिखने और एसक्यूएल-सीएलआर असेंबली के रूप में एसक्यूएल सर्वर में तैनात करने का प्रयास करें – फिर आप Guid.TryParse() जैसी चीजों का इस्तेमाल कर सकते हैं जो टी-एसक्यूएल में कुछ भी इस्तेमाल करना आसान है …

R0d30b0y उत्तर का एक प्रकार एक स्ट्रिंग के भीतर खोजने के लिए PATINDEX का उपयोग करना है …

 PATINDEX('%'+REPLACE('00000000-0000-0000-0000-000000000000', '0', '[0-9a-fA-F]')+'%',@StringToCompare) > 0 

एक यूआरएल स्ट्रिंग के भीतर गुड्स को खोजने के लिए इस्तेमाल किया था ..

HTH

डेव

इसे सरल रखने की तरह एक GUID के पास चार – यहां तक ​​कि, यदि सिर्फ एक स्ट्रिंग है

'% -% -% -% -%' जैसी स्तंभ कहाँ है

यद्यपि एक पुरानी पोस्ट, एक त्वरित परीक्षण के लिए सिर्फ एक विचार …

 SELECT [A].[INPUT], CAST([A].[INPUT] AS [UNIQUEIDENTIFIER]) FROM ( SELECT '5D944516-98E6-44C5-849F-9C277833C01B' Collate Latin1_General_100_BIN AS [INPUT] UNION ALL SELECT '{5D944516-98E6-44C5-849F-9C277833C01B}' UNION ALL SELECT '5D944516-98E6-44C5-849F-9C277833C01BXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' UNION ALL SELECT '{5D944516-98E6-44C5-849F-9C277833C01B}ssssssssss' UNION ALL SELECT 'ÀD944516-98E6-44C5-849F-9C277833C01B' UNION ALL SELECT 'fish' ) [A] WHERE PATINDEX('[^0-9A-F-{}]%', [A].[INPUT]) = 0 

आप अपना यूडीएफ लिख सकते हैं एसक्यूएल-सीएलआर असेंबली के उपयोग से बचने के लिए यह एक सरल अनुमान है

 CREATE FUNCTION dbo.isuniqueidentifier (@ui varchar(50)) RETURNS bit AS BEGIN RETURN case when substring(@ui,9,1)='-' and substring(@ui,14,1)='-' and substring(@ui,19,1)='-' and substring(@ui,24,1)='-' and len(@ui) = 36 then 1 else 0 end END GO 

इसके बाद आप इसे जांचने के लिए बेहतर कर सकते हैं कि यह केवल हेक्स मूल्यों के बारे में है।

मैं उपयोग करता हूं :

 ISNULL(convert(nvarchar(50), userID), 'NULL') = 'NULL' 

यह कुछ पहले की टिप्पणियों की अवधारणा के आधार पर एक समारोह है। यह फ़ंक्शन बहुत तेज है

 CREATE FUNCTION [dbo].[IsGuid] (@input varchar(50)) RETURNS bit AS BEGIN RETURN case when @input like '[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]' then 1 else 0 end END GO /* Usage: select [dbo].[IsGuid]('123') -- Returns 0 select [dbo].[IsGuid]('ebd8aebd-7ea3-439d-a7bc-e009dee0eae0') -- Returns 1 select * from SomeTable where dbo.IsGuid(TableField) = 0 -- Returns table with all non convertable items! */ 

मेरे पास कुछ टेस्ट उपयोगकर्ता थे जो ऑटोफाईक्शंस से उत्पन्न हुए थे, जो उत्पन्न क्षेत्रों के लिए डिफ़ॉल्ट रूप से GUID का उपयोग करता है। जिन उपयोगकर्ताओं को मैं हटाने की आवश्यकता है उनके लिए मेरा पहला नाम फ़ील्ड GUIDs या अद्वितीय पहचानकर्ता हैं I इसी तरह मैं यहाँ समाप्त हुआ था।

मैं इस में आपके कुछ उत्तरों को एक साथ मिलाकर कर पा रहा था।

SELECT UserId FROM [Membership].[UserInfo] Where TRY_CONVERT(uniqueidentifier, FirstName) is not null