This works perfectly and will save me amazing amounts of time.
Thanks again!
>>I have many many column that are char(36) imported from VFP that have been constructed to be cast as UID.
>>
>>For the most part they convert fine when I
>>
>>ALTER TABLE tblname
>>ALTER COLUMN colname Uniqueidentifier
>>GO
>>
>>However on the four or five that fail, all I get is
>>
>>Conversion failed when converting from a character string to uniqueidentifier.
>>
>>but there are half a million rows, so I don't know where my upsizer is failing to catch a badly formed GUID(36)
>>
>>Is there a tsql syntax that would be something like (forgive the bad pseudocode but you get the idea)
>>
>>SELECT success = CAST(cid as Uniqueidentifier) from ACCOUNT_CREDITS where success = false
>>
>>I need to know which row it chokes on. Could probably write an iteration but seems there must be a set based way to do this.
>>
>>TIA
>
>
http://stackoverflow.com/questions/4649317/how-to-check-if-a-string-is-a-uniqueidentifier>
>
>DECLARE @Test TABLE (Cid char(36))
>
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>INSERT INTO @test VALUES ('adfasdfadfasdfasdfasdfas')
>INSERT INTO @test VALUES ('63F4B1CD-80DD-4F96-B5EF-520A4FDADA63')
>
>SELECT CASE
> WHEN NOT (Cid LIKE expression + '%' OR Cid LIKE '{' + expression + '}%') THEN Cid
> END
>FROM @test T
> CROSS APPLY (SELECT REPLACE('00000000-0000-0000-0000-000000000000', '0', '[0-9a-fA-F]') COLLATE Latin1_General_BIN) C2(expression)
>WHERE NOT (Cid LIKE expression + '%' OR Cid LIKE '{' + expression + '}%')
>
Charles Hankey
Though a good deal is too strange to be believed, nothing is too strange to have happened.
- Thomas Hardy
Half the harm that is done in this world is due to people who want to feel important. They don't mean to do harm-- but the harm does not interest them. Or they do not see it, or they justify it because they are absorbed in the endless struggle to think well of themselves.
-- T. S. Eliot
Democracy is two wolves and a sheep voting on what to have for lunch.
Liberty is a well-armed sheep contesting the vote.
- Ben Franklin
Pardon him, Theodotus. He is a barbarian, and thinks that the customs of his tribe and island are the laws of nature.