|
Posted by Erland Sommarskog on 04/26/07 21:44
Brian (b.houghtby@eaglecrusher.com) writes:
> Sorry, Let me start over. I am trying to do a mass change of a bunch of
> numbers that a user entered incorrectly. He entered them with a lower
> case letter instead of uppercase. The numbers all begin with a 99l and
> I want to do a mass replace to change them all to a 99L. The numbers
> have a suffix that is not constant like the prefix. Example; 99l555,
> 99l556, 99l557 and so on.
>
> The name of the table is dbo.item and the column is ima_itemid. Here is
> my select statement.
>
> Select * from dbo.item where
> ima_itemid like '99l%'
>
> This result gives me a mixture of 99l's and 99L's. So apparently the
> user eventually started entering them the correct way, in case that is
> an issue having a mixture. It appears that my select statement doesn't
> care about case since I get upper and lower, although I used lower in my
> select. Hope this clarifies some.
Then this should do it:
UPDATE item
SET ima_itemid = replace(ima_itemid, 'l', 'L')
WHERE ima_itemid COLLATE Latin1_General_BIN LIKE '99l%'
By foring a binary collation, only rows with the incorrect pattern
are selected. This should not trigger an FK constraint violation,
given what you have said about both 99l and 99L being returned.
The suggestion from Andrey to add a constraint to prevent this from
happening again is an excellent idea you should pursue.
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
Navigation:
[Reply to this message]
|