Ошибка SQL на сервере SQL с помощью оператора REPLACE - PullRequest
0 голосов
/ 06 октября 2011

У меня следующий запрос:

REPLACE sessions (session_id,session_data,expires) VALUES('pcal586o43604g0vpu5j22', 'id|i:111;user|N;s:9:\\\"admin\\\";admin_page|s:16:\"/control/\";', 1317934461) 

, который прекрасно работает с mysql, но при использовании SQL SERVER выдает эту ошибку:

Msg 102, уровень 15, состояние 1, Строка 1 Неверный синтаксис рядом с 'session_id'.

Может кто-нибудь сказать мне что-нибудь, что может быть не так с этим запросом?

Ответы [ 3 ]

2 голосов
/ 06 октября 2011

В SQL Server нет команды REPLACE для замены значений в таблице .... вместо этого необходимо использовать стандартный оператор SQL UPDATE:

UPDATE dbo.sessions 
SET session_id = 'pcal586o43604g0vpu5j22',
      session_data = 'id|i:111;user|N;s:9:\\\"admin\\\";admin_page|s:16:\"/control/\";',
      expires = 1317934461
WHERE .... (some condition here - otherwise you update ALL rows!)

Функция REPLACE в T-SQLявляется строковой функцией, которая заменяет данную подстроку внутри другой строки заменой.

1 голос
/ 06 октября 2011

SQL Server не имеет эквивалента для MySQL REPLACE .Вам придется кодировать функциональность вручную.

1 голос
/ 06 октября 2011

В TSQL REPLACE является строковой функцией, а не операцией на основе набора.

В MySQL REPLACE является расширением MySQLк стандарту SQL.Он либо вставляет, либо удаляет и вставляет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...