zoukankan      html  css  js  c++  java
  • 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 @S
    EXEC(@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)
  • 相关阅读:
    洛谷P3959 宝藏(模拟退火乱搞)
    POJA Star not a Tree?(模拟退火)
    HDU 2899Strange fuction(模拟退火)
    洛谷P2062 分队问题(dp)
    主定理与时间复杂度
    android工程混淆和反编译
    查看linux内存、cpu
    Android sqlite数据库存取图片信息
    深入浅出JSONP--解决ajax跨域问题
    分析WordPress主题结构是如何架构的?
  • 原文地址:https://www.cnblogs.com/qitianshuye/p/4434920.html
Copyright © 2011-2022 走看看