2011-10-06 89 views
0

我有以下查询:SQL错误使用REPLACE语句

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, Level 15, State 1, Line 1 Incorrect syntax near 'session_id'.

谁能告诉我这个查询可能有问题吗?

+0

我需要查看它是否已经存在,然后根据此更新或插入。这是做到这一点的方式吗? – kalpaitch

回答

1

SQL Server与MySQL的REPLACE没有相同之处。您必须手动编写功能。

1

在TSQL中,REPLACE是一个字符串函数,而不是基于集合的操作。

在MySQL中,REPLACE是SQL标准的MySQL扩展。它要么插入,要么删除,插入。

2

没有命令REPLACE在SQL Server表中的替换值....你需要使用标准的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!) 

T-SQL的REPLACE功能是一个字符串函数用替换替换另一个字符串内的给定子字符串。