2012-03-21 13 views
5

Mam tabelę z serią uprawnień i muszę zmienić uprawnienia każdego użytkownika na Y w danej pozycji p w łańcuchu, czy istnieje polecenie SQL, którego mogę użyć lub zrobić Muszę napisać program/skrypt, żeby to zrobić?Zmienianie określonego znaku w ciągu MySQL

Odpowiedz

7

Można użyć kombinacji concat i podciągu w MySQL:

mysql> select concat(substring('12345',1,3),'A',substring('12345',5)); 
+---------------------------------------------------------+ 
| concat(substring('12345',1,3),'A',substring('12345',5)) | 
+---------------------------------------------------------+ 
| 123A5             | 
+---------------------------------------------------------+ 

można zastąpić „12345” z nazwą swojej kolumnie.

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

+0

Sugerujemy użycie funkcji insert(). Guido wydaje się zmieniać jedną szarżę na drugą. Więc insert() będzie miał rację. Używanie substring() będzie poprawne, jeśli chcesz zmienić np. 5 znaków na 10 innych, więc gdy długość źródła! = Id-długość. – Peter

0

Wystarczy skorzystać z funkcji insert(). Dajesz mu ciąg źródłowy, ciąg, który chcesz wstawić i długość znaku. Jak:

UPDATE TAB_SAP SET tsap_xgen = INSERT(tsap_xgen, 52, 1, '0') WHERE tsap_unidade = '1392398397' AND SUBSTR(tsap_xgen,52,1) != '0' 

W tym przypadku, mogę szukać rejestr strażaka (Sapador), które należą do spółki (unidade) i które jako specyficzny flagą w ciąg (substr (tsap_xgen, 52,1) ! = '0' część klauzuli WHERE), następnie aktualizuję ten ciąg, aby zmienić znak na "0". Używając insert() możesz zmienić więcej niż jeden znak, np. INSERT (field_name, 52, 5, "Hello")

Zauważ, że nazwa funkcji jest "dziwna", ponieważ nie "wstawia", ale "kasuje" char na miejscu, aby umieścić nowe znaki.

Powiązane problemy