前言:Sql Server中LIKE里面使用不同的变量类型导致查询结果不一致的问题,其实看似有点让人不解的现象背后实质跟数据类型的实现有关. 一.我们先来创建示例演示具体操作 CREATE TABLE TEST (ID ,), NAME ) ) INSERT INTO dbo.test SELECT 'xiaofei' INSERT INTO dbo.test SELECT 'xiaofei' INSERT INTO dbo.test SELECT 'xiaofei' ); SET @name=…
一同事在写脚本时,遇到一个关于LIKE里面使用不同的变量类型导致查询结果不一致的问题,因为这个问题被不同的人问过好几次,索性总结一下,免得每次都要解释一遍,直接丢一篇博客岂不是更方便!其实看似有点让人不解的现象背后实质跟数据类型的实现有关. 下面我们构造这样一个类似的简单案例.如下所, CREATE TABLE TEST (ID        INT IDENTITY(1,1), NAME    VARCHAR(32) )   INSERT INTO dbo.test SELECT 'abc32…
前言 SQL Server开发过程中,为了传入数据集类型的变量(比如接受C#中的DataTable类型变量),需要定义"用户自定义表类型",通过"用户自定义表类型"可以接收二维数据集作为参数,在需要修改"用户自定义表类型"的时候,增加字段,删除字段,修改字段类型等,它没有像表一样的alter table语法来进行修改. 只能通过删除重建来实现,但是在删除"用户自定义表类型"的时候会提示有对象引用它(某些存储过程用到了这个&qu…
在数据库大小分配期间,我正在等待类型PREEMPTIVE_OS_WRITEFILEGATHER.昨天,我将数据库大小配置为供应商建议的值.我们需要将数据库大小设置为700GB,保留150 GB的日志文件.我已经在不到2分钟的时间内成功配置了数据文件大小,因为我们已经启用了  即时文件初始化.我们知道即时文件初始化(IFI)通过跳过零初始化操作来加速数据文件大小分配.但是当我开始扩展日志文件大小时,花了很多时间.花费更长时间的一个原因可能是因为 正在运行以分配日志文件空间的会话ID显示的等待类型P…
  本文面向对SQL SERVER中变量操作不熟悉的用户,希望能使他们在看完本文后能对变量操作有具体和全面的认识.   在学习SQL SERVER的过程中,很多时候需要对某些单独的值进行调试,这时就需要在SQL SERVER中对变量进行操作. 变量能进行的操作分定义.赋值.使用三种,下面以一段简短的代码作为示例: --定义一个名称为@I的变量,指定其类型为整数 DECLARE @I INT --对变量@I赋值为 SET @I=3 --输出@I的值 SELECT @I 这就是一个最简单的变量操作,…
原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 image 数据类型,除非使用 IS NULL 或 LIKE 运算符.不过image也是不支持like比较的.那怎么样对数据库中的图片做比较呢.对于这种大型对象的处理,在Oracle中有有专门的函数DBMS_LOB.COMPARE,而SQLSERVER中没有专门的处理函数,只能通过使用substri…
网址:http://blog.sina.com.cn/s/blog_63d0c97a0100qpy7.html 声明局部变量语法: DECLARE @variable_name DataType 其中 variable_name为局部变量的名称,DataType为数据类型. 给局部变量赋值有两种方法: 1.SET @variable_name=value 2.SELECT @variable_name=value 两者的区别:SET赋值语句一般用于赋给变量一个指定的常量,SELECT赋值语句一般…
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings name="  " connectionString="  "></connectionStrings >, connectionString代表数据库链接字符串,name代表你想要引用的时候查找的名称.(其实asp里的web.config配置方式也跟这…
DECLARE @a int declare @b int IF(@a<>@b) print('@a<>@b') else print('@a=@b') ) print('b<>1') else print('b=1') 如上代码 在SQL Server中的执行结果是:  @a=@b  b=1 解释: @b没有赋值,默认值为NUll,NUll的意思是不知道,拿一个不知道的变量来做比较 永远会返回false. 以上的代码无论拿变量@b和@a怎么逻辑运算 都不会去执行if中…
FieldByName('e').AsBoolean = false 其中e为 sql server 中的bit类型.…