精华内容
下载资源
问答
  • set值 sqlserver
    千次阅读
    2018-10-09 11:38:35

    SqlServer常用的Set选项

    SET XACT_ABORT { ON | OFF }  
    --指定当 SQL Server 语句出现运行时错误时, 是否自动回滚当前事务。
    SET LOCK_TIMEOUT timeout_period 
    --指定语句等待锁释放的毫秒数。
    SET NOCOUNT { ON | OFF }   
    --是否显示语句或存储过程影响的行计数的消息
    SET TRANSACTION ISOLATION LEVEL
        { READ UNCOMMITTED
        | READ COMMITTED
        | REPEATABLE READ
        | SNAPSHOT
        | SERIALIZABLE
        }
    --设置事务隔离级别
    --READ UNCOMMITTED 未提交读
    --READ COMMITTED 已提交读
    --REPEATABLE READ 可重复读	
    --SNAPSHOT 快照
    --SERIALIZABLE 可序列化
    

    参考文档
    https://docs.microsoft.com/zh-cn/sql/t-sql/statements/set-statements-transact-sql?view=sql-server-2017

    更多相关内容
  • SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。当表达式返回一个并对一个变量进行赋值时,推荐使用 SET 方法。下表列出 SET 与 SELECT 的区别。请特别注意红色部分。   set select 同时对多个变量...
  • SQL SERVER将某一列字段中的某个替换为其他的 update 表名 set 列名 = REPLACE( 列名 ,... 您可能感兴趣的文章:sqlserver replace函数 批量替换数据库中指定字段内指定字符串参考方法Sql Server中REPLACE函数的使用
  • sqlserver中有时候我们需要获取多条重复数据的一条,需要的朋友可以参考下面的语句
  • 在往数据库表中添加一行的时候,要针对自增列插入一个特定的时候,这个函数就很有用了,比如表结构如:  id | text  1 | a  2 | b  4 | d 其中id列是自曾列,如果我们要插入3 | c的话,如果没有打开...
  • --SQL 判断字段是否有中文 create function fun_getCN(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1),@CN nvarchar(4000) set @CN='' while len(@str)>0 begin set @word=...
  • StreamSet操作教学-SqlServer同步到Hive

    千次阅读 2020-05-28 16:25:13
    公司上大数据,要把sqlserver里的业务数据实时同步到大数据平台上。几天调研后选择StreamSet作为ETL工具。技术选型的理由主要有几点: sqlserver的坑太深,网上找了很多工具对sqlserver的支持力度都不是很大(微软...

    业务背景

    公司上大数据,要把sqlserver里的业务数据实时同步到大数据平台上。几天调研后选择StreamSet作为ETL工具。技术选型的理由主要有几点:

    1. sqlserver的坑太深,网上找了很多工具对sqlserver的支持力度都不是很大(微软全家桶的要哭了~)
    2. 自己开发ETL程序耗时太长,同时配套的ETL metrics工具也需要配备,劳民伤财。感觉有时间开发不如把精力放在业务数据研究和指标计算上。
    3. sqlserver支持两种实时同步机制:CDC和Change Tracking,CDC使用起来比较重 果断放弃。

    streamset安装

    我用的是CDH6.2版本集成化了StreamSet,方便管理。

    1. streamset下载地址:https://archives.streamsets.com/index.html
      我下载的是3.14.0版本
    2. 配置本地yum源
      将下载的三剑客文件放在一个新建文件夹中,并移动到/var/www/html 目录中,做离线包的下载地址,用浏览器访问如下,表示成功
    3. 配置CSD
      将STREAMSETS-3.1.4.0.jar拷贝到/opt/cloudera/csd,并更改权限,然后重启cloudera-scm-server服务,没有csd文件夹就自己新建一个。

    4.下载分发激活Parcel包
    传送门:https://cloud.tencent.com/developer/article/1078852

    sqlserver之Change Tracking

    sqlserver上开启Change Tracking,这里要做到表级别Change Tracking

    1. 开启库级别Change Tracking
    ALTER DATABASE 数据库名 SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS,AUTO_CLEANUP = ON)
    
    1. 开启表级别Change Tracking
    ALTER TABLE [dbo].[Department] ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
    

    Streamset之sqlserver配置

    1. 右上角点击All Stages找到SQLxxx
    2. 配置分析
      JDBC链接
      要下载一个MSSQL驱动
      正则表示需要同步的表和不需要同步的表
      数据库账号密码
      jdbc包的驱动类

    StreamSet之Hive配置

    配置Hive要使用HiveMeData和HiveMeStore两个插件
    重要参数详解:

    1. Database Expression:Hive数据库选择,不写则是默认库
    2. Partition Configuration:设置Hive分区的参数,这里可以设置成多级分区,只要选择“+”就行,其中Partition Value Expression是获取分区号数据的表达式,可以自己生成也可以根据表字段里的数据定义分区。因为我们数据原因,我这里表达式写的很蛋疼~有关表达式的写法建议大家直接去撸下官网(PS:Streamset的官网文档还是很不错的,个人感觉比flink强多了!!)。
      官网functions传送门:https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Expression_Language/Functions.html#concept_lhz_pyp_1r
      HiveMeData

    StreamSet之HDFS配置

    重要参数详解:
    File System URI:hdfs的URI连接
    Configuration Files Directory:hdfs的config文件位置,需要加载core-site.xml
    Files Prefix:生成hdfs的文件前缀,建议大家改一下,不然生成的文件名巨长~
    Files Suffix:生成hdfs的文件后缀,为用了txt格式,记住不用加点
    Directory in Header:打钩后会直接落盘到hive的/user/hive/warehouse/中,如果不打钩,则可以自定义落盘路径
    Compression Codec :选择压缩算法
    Use Roll Attribute :回滚机制
    Connection连接
    在这里插入图片描述

    StreamSet之踩坑实战

    处理数据同步过程中避免不了加减字段,清洗数据等问题,业务越复杂的OLTP架构中数据迁移越是麻烦,在学习使用StreamSet中,建议大家先去撸清楚官网。我自己在学习使用中总结两个方面感觉很有必要:

    1. 函数表达式,这里的坑很多,要想使用数据,调用数据都要通过表达式来完成
    2. Field开头的插件大多是对数据做处理加工的,大家使用前一定要对Field开头的插件挨个看一遍。我自己就使用了Field Type Converter(字段值类型转换)、Expression Evaluator(表达式执行器)

    在这里插入图片描述专注大数据生态、Spark/Flink、Java/Scala仔
    架构未满、Coding至上、一直在路上

    展开全文
  • 在使用sql server过程中会遇到非空判断,本文将详细介绍sql server字符串非空判断实现方法,需要了解的朋友可以参考下
  • sqlserver学习之set与select的区别

    千次阅读 2018-05-09 15:15:24
    转自:http://www.cnblogs.com/micheng11/archive/2008/07/08/1237905.htmlSQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL ...SQL Server推荐使用 SET 而不是...

    转自:http://www.cnblogs.com/micheng11/archive/2008/07/08/1237905.html

    SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。

    对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们
    并没有注意,其实这两种方式还是有很多差别的。

    SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。
    当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。

    下表列出 SET 与 SELECT 的区别。请特别注意红色部分。

     setselect
    同时对多个变量同时赋值不支持支持
    表达式返回多个值时出错将返回的最后一个值赋给变量
    表达式未返回值变量被赋null值变量保持原值

    下面以具体示例来说明问题:

    create table chinadba1(
    userid int ,
    addr varchar(128) 
    )
    go
    insert into chinadba1(userid,addr) values(1,'addr1')
    insert into chinadba1(userid,addr) values(2,'addr2')
    insert into chinadba1(userid,addr) values(3,'addr3')
    go

    表达式返回多个值时,使用 SET 赋值


    declare @addr varchar(128)
    set @addr = (select addr from chinadba1)
    /*
    --出错信息为
    服务器: 消息 512,级别 16,状态 1,行 2
    子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
    */
    go

    表达式返回多个值时,使用 SELECT 赋值

    declare @addr varchar(128)
    select @addr = addr from chinadba1
    print @addr --结果集中最后一个 addr 列的值
    --结果: addr3 
    go

    表达式未返回值时,使用 SET 赋值

    declare @addr varchar(128)
    set @addr = '初始值'
    set @addr = (select addr from chinadba1 where userid = 4 )
    print @addr --null值 
    go

    表达式未返回值时,使用 SELECT 赋值

    declare @addr varchar(128)
    set @addr = '初始值'
    select @addr = addr from chinadba1 where userid = 4
    print @addr --保持原值
    go

    需要注意的是,SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值。
    此时与 使用 SET 赋值是完全相同的
    对标量子查询的概念大家应该都觉得陌生,举个例子就能说明

    declare @addr varchar(128)
    set @addr = '初始值'
    --select addr from chinadba1 where userid = 4 为标量子查询语句
    select @addr = (select addr from chinadba1 where userid = 4) 
    print @addr --null值

    go



    另外:

    SELECT给变量赋值

    使用SELECT的另一种形式也可以获得同样的结果。对变量要在赋值前要先声明。使用SELECT语句来替代SET命令的主要优点是,可以在一个操作内同时给多个变量赋值。执行下面的SELECT语句,通过SELECT语句赋值的变量就可以用于任何操作了。

    DECLARE @MyNumber1 int, @MyNumber2 int,

    @MyResult1 int, @MyResult2 int

    SELECT @MyNumber1 = 144, @MyNumber2 = 121  

    -- Assign the function result to the variable: 

    SELECT @MyResult1 = SQRT(@MyNumber1),

    @MyResult2 = SQRT(@MyNumber2)  

    -- Return the variable value 

    SELECT @MyResult1, @MyResult2  --通过SELECT语句赋值的变量就可以用于任何操作了。


    展开全文
  •  (2)sqlserver中的解决方法 SELECT * from cust where (buttonids like '%,4' or buttonids like '4,%' or buttonids like '%,4,%' or buttonids = '4') or (buttonids like '%,5' or buttonids like '5,...

          在平常的业务逻辑中,当两个对象之间是多对多关系的时候,我们建表一般有两种方法,一种就是建立一个中间表,还有一种就是在一张表中的某一个字段,存另一个对象的id逗号隔开的那种形式。今天我们主要针对第二种方法的一些处理,因为,在mysql中和sqlerver中,针对逗号隔开的形式的处理,两种数据库的处理是不一样的。当然orcal数据库也是不一样的,今天暂时不写orcal数据库的不同。

      准备工作:我们需要先建立两张表。用户表和按钮表(图一cust表 图二按钮表)

      

    下面我们通过做题的形式,来进行理解两种数据库对这两个函数的不同

    1.查找出含有审核或者发布按钮的用户

    (1)mysql中的解决方法

    SELECT *
    from  cust
    where FIND_IN_SET('4',buttonids) or FIND_IN_SET('5',buttonids)

     (2)sqlserver中的解决方法

    SELECT * from cust
    where
    (buttonids like '%,4' or buttonids like '4,%' or buttonids like '%,4,%' or buttonids = '4') 
      or 
    (buttonids like '%,5' or buttonids like '5,%' or buttonids like '%,5,%' or buttonids = '5')

       结果:

      

     2.查询出用户列表,同时后面跟一列显示该用户所拥有的 按钮名称也是逗号隔开的那种形式           

    (1)mysql中的解决方法

    SELECT
    	ta.custid,
    	ta.username,
    	GROUP_CONCAT(ta.buttonname) AS buttonnames,
    	GROUP_CONCAT(ta.buttonname,'--',ta.buttonid) AS buttonidandnames
    FROM
    	(
    		SELECT
    			c.custid,
    			c.username,
    			c.`password`,
    			c.buttonids,
    			b.buttonid,
    			b.buttonname,
    			FIND_IN_SET(b.buttonid, c.buttonids) nums
    		FROM
    			cust c,
    			t_button b
    	) ta
    WHERE
    	ta.nums > 0
    GROUP BY
    	ta.custid,
    	ta.username

    (2)sqlserver中的解决方法

           

    SELECT
    	c.custid,
    	c.username,
    	stuff (
    		(
    			SELECT
    				',' + CONVERT (VARCHAR, b.buttonname)
    			FROM
    				t_button b
    			WHERE
    				1 = 1
    			AND charindex (
    				',' + CONVERT (VARCHAR, b.buttonid),
    				',' + c.buttonids
    			) > 0 FOR XML path ('')
    		),
    		1,
    		1,
    		''
    	) AS buttonnames,
    	stuff (
    		(
    			SELECT
    				',' + CONVERT (VARCHAR, b.buttonname) + '--' + b.buttonid
    			FROM
    				t_button b
    			WHERE
    				1 = 1
    			AND charindex (
    				',' + CONVERT (VARCHAR, b.buttonid),
    				',' + c.buttonids
    			) > 0 FOR XML path ('')
    		),
    		1,
    		1,
    		''
    	) AS buttonidandnames
    FROM
    	cust c

    结果:

                     

    用到的知识点:

    a.find_in_set('a', 列名称)

    b.group_contact(列名称),该函数,应用在group by分组之后的数据。

    c.sqlserver中的stuff函数。

    补充的知识点:

    a.find_in_set(列名称,'a,b,c,d') 类似于 列名称  in (a,b,c,d);

    b.contact(列名称1,列名称2,列名称3)  as  names   将其他列的值连起来

    参考链接:

    https://blog.csdn.net/qq_35374517/article/details/76687049

    https://www.cnblogs.com/xiaoxi/p/5889486.html

    https://www.cnblogs.com/blazezzz/p/7359575.html?%20?%20?

                               

    展开全文
  • SQL SERVER求每行最大列

    千次阅读 2019-08-11 18:54:41
    我们一般都是求某一列的最大,但是偶尔也会有求每一行中的最大,今天介绍一下,每行最大的写法 --测试数据 if not object_id(N'T') is null drop table T Go Create table T([id1] int,[id2] int,[id3] int...
  • SQL Server 常用 几个设置(set)选项

    千次阅读 2016-12-23 11:44:38
    1. SET DEADLOCK_PRIORITY  2. SET LOCK_TIMEOUT  3.@@LOCK_TIMEOUT  4.SET IDENTITY_INSERT  5.SET IMPLICIT_TRANSACTIONS  6.SET NOCOUNT  7.@@ROWCOUNT  8.SET ROWCOUNT  9.SET TRANSACTION ISOL
  • 本文来自:http://www.cnblogs.com/zhang9418hn/archive/2012/03/21/2409551.html 下面是这样一个例子:  两个表a、b,想使b中的memo字段等于a表中对应id的name  表a:id, name  1 王  2 李
  • SQL Server UPDATE NULL遇到的坑

    千次阅读 2019-04-26 10:25:02
    表设计结构( num字段 本应设置为非NULL,默认值为0) ...UPDATE testNUM SET num= num + 11 WHERE id=2 则执行反馈为 但表中字段仍旧未改变 当然,修改下相关字段设计:非NULL,默认为0 即可 ...
  • 在最外层转换,数字时转为0,字符时转为空字符’’ MAX(G.FTAMT) --isnull(MAX(G.FTAMT) ,'') SUM(b.AMT1)--isnull(SUM(b.AMT1),0)
  • SqlServer根据查找含有的数据表及字段 知道数据库中一定存在的一个,但是数据表太多,不知道是哪张表的时候,可以根据,查找相关表及字段 declare @cloumns varchar(40) declare @tablename varchar(40) ...
  • SQL SERVER 变量赋值

    万次阅读 2019-08-04 17:50:54
    SQL Server中变量赋值的方式有两种,分别是SET和SELECT。 两种赋值方式的区别如下: set select 同时对多个变量赋值 不支持 支持 表达式返回多个 不支持 将返回的最后一个赋给变量 ...
  • 今天给大家介绍一下TOP、OFFSET-FETCH、SET ROWCOUNT用法笔记,希望对大家能有所帮助!1、 TOP用法语法格式:TOP ( expression ) [ PERCEN...
  • 1 报错 2 解决方法 set identity_insert table_name ON--打开 --插入 insert into table_name(colu1,colu2,colu3) values(values1,values2,values3) set identity_insert table_name OFF--关闭
  • SQLServer中如何将一个字段的多个记录合在一行显示
  • SQL SERVER 修改 字段部分子串 平时修改字段都是使用 UPDATE 表名 SET 字段名 = 字段新 WHERE 条件 修改整个字段. 今天来了一个新需求,只要修改原字段中的部分子串. 如,修改字段,将CM70V1420420001修改成CM70V...
  • sqlserver 自增列 插入

    千次阅读 2020-08-17 15:45:44
    sqlserver 批量插入记录时,对有标识列的字段要设置 set IDENTITY_INSERT 表名 on,然后再执行插入记录操作;插入完毕后恢复为 off 设置 格式: set IDENTITY_INSERT 表名 on set IDENTITY_INSERT 表名 off 举例: set ...
  • 有时候我们想通过一个知道这个来自数据库的哪个表以及哪个字段,通过一个存储过程实现的。...CREATE PROCEDURE [dbo].[SP_FindValueInDB](@value VARCHAR(1024))ASBEGIN-- SET NOCOUNT ON added to prevent...
  • SQLSERVER ISNULL 函数与判断是否为空的sql语句2019-01-03编程之家收集整理的这篇文章主要介绍了SQLSERVER ISNULL 函数与判断是否为空的sql语句,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。...
  • sqlserver中的表函数和标量函数

    千次阅读 2017-11-14 17:41:07
    顾名思义:表函数返回的是表,而标量函数可以返回基类型 一、表函数 用户定义表函数返回 table 数据类型,表是单个 SELECT 语句的结果集。 以下示例: CREATE FUNCTION F3_GetEmployeeSalary ( @EmployeeID...
  • 将 @string 替换成需要查询的 ...SET @SQL = N'DECLARE @str NVARCHAR(4000); SELECT @str = ISNULL(@str + N'' OR '' + c.name + N'' LIKE N''''%' + @string + ' %'''''', c.name + N'' LIKE N'...
  • set a.ORG_TYPE_ID = b.ID from ORG_DEPARTMENT a inner join PUB_DATA_DICTIONARY b on a.ORG_TYPE_NAME = b.CNAME //翻译 更新 ORG_DEPARTMENT 表 命名为a ,PUB_DATA_DICTIONARY 表 命名为 b; b表的ID 更新到...
  • SQL SERVER XML属性

    千次阅读 2019-06-10 18:37:23
    sql操作xml数据的时候,有时候有要得到其属性的需求,例子如下: DECLARE @x XML SET @x=' <root> <部位 ID="59" 名称="头颅"> <检查方法 ID="1" 名称="正位" /> <检查方法 ID="2" ...
  • 在使用过程中,传一个表(数据集)的需求是真实存在的,经常有人问。 于是,总结了以前零零散散的知识,汇集为本文,分享... d DATE --SqlServer2005需要改为datetime ) GO SET NOCOUNT ON INSERT INTO t VALUES(1,2

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 293,680
精华内容 117,472
关键字:

set值 sqlserver