你的位置:首页 > 数据库

[数据库]sqlserver之二进制和字符串sql语句

  正常情况下我们对数据库的操作就是如下的写法来操作数据库

SELECT TOP 10 ID AS 编号,BookName AS 书名 FROM dbo.books ORDER BY ID; UPDATE dbo.books SET BookName='新的书名' WHERE ID=1233; DELETE FROM dbo.books WHERE ID=122

     但是在客户正在使用的数据库里,我们开发人员一般不能够直接操作数据库,但是会给我们做一个网页以便方便我们核对数据,查找错误,但是这种情况下一般都会屏蔽一些关键词,比如update delete,create,alter神马的,一般请客下对客户数据库的操作都得严格按照公司流程来走,这种情况下效率一般都会很低,在这里还有一种情况可以直接让我们对数据库做更改,那就是首先将字符串以二进制的形式骗过后台程序,以便发送到数据库中去执行,如下:

DECLARE @S NVARCHAR(4000) SET @S=CAST(0x53454C45435420544F5020313020494420415320B1E0BAC52C426F6F6B4E616D6520415320CAE9C3FB2046524F4D2064626F2E626F6F6B73204F524445522042592049443B AS VARCHAR(max))PRINT @SEXEC(@S)

下面便是直接把sql语句转换成二进制

DECLARE @str VARCHAR(MAX),@bary VARBINARY(MAX)SET @str='SELECT TOP 10 ID AS 编号,BookName AS 书名 FROM dbo.books ORDER BY ID;'--将字符串转换成二进制对象SET @bary= CAST(@str AS VARBINARY(MAX))PRINT @bary--将二进制对象转换成字符串SET @str=CAST(@bary AS VARCHAR(max))--执行sql脚本EXEC(@str)