Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak modyfikować wiele węzłów za pomocą SQL XQuery w MS SQL 2005

„Proste” podejście polegałoby na rzuceniu kolumny XML na VARCHAR(MAX) i po prostu wykonaniu na niej REPLACE:

UPDATE
  YourTable
SET
  ParameterValue = CAST(REPLACE(CAST(ParameterValue AS VARCHAR(MAX)), '
                                Billy', 'Peter') AS XML)
WHERE
  ....

Wygląda na to, że nie można zaktualizować wielu wartości węzłów XML w jednej instrukcji UPDATE, jak wyjaśnia Richard Szalay tutaj :

Niestety, wygląda na to, że implementacja jest strasznie ograniczona, ponieważ nie może dokonać dowolnej liczby modyfikacji tej samej wartości w jednej aktualizacji.

Sądzę więc, że będziesz musiał albo użyć „głupiego” podejścia VARCHAR (MAX) wspomnianego powyżej, albo wykonać aktualizację w pętli (GDY nadal znajdziesz węzeł z „billy”, Zaktualizuj ten węzeł, aby zamiast tego czytał „Piotr” ).

Marek



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać ROW_NUMBER()?

  2. Co to jest impas w bazie danych?

  3. SQL RANK() a ROW_NUMBER()

  4. Zaokrąglanie milisekund w T-SQL

  5. Logika raportu księgi w procedurze składowanej