随笔分类 -  T-SQL

摘要:联接提示 可以在使用JOIN时要求最终执行计划使用指定的JOIN方式,支持LOOP\HASH\MERGE其一。这个我几乎工作中极少使用到。除非生产环境慢SQL的执行计划不合理,例如采用NESTED JOIN,但是LOOP的主表节点数据行数非常多,那是执行计划错误,通过更新统计数据STATISTICS 阅读全文
posted @ 2022-05-25 20:44 Jerry_Chen 阅读(175) 评论(0) 推荐(0) 编辑
摘要:OPENJSON 表值函数,解析JSON文本成集合。如果不指定WITH关键字,默认返回3个列,分别是key,value和type。参数2可以指定到具体的JSON节点。可以通过WITH关键字指定返回结果集合的列定义,WITH关键字即便是JOIN或者CROSS APPLY其他表的时候也是适用。 DECL 阅读全文
posted @ 2022-05-25 16:20 Jerry_Chen 阅读(87) 评论(0) 推荐(0) 编辑
摘要:COLUMNS_UPDATED和UPDATE 这两个函数都是用于表触发器里面判断字段是否被更新。区别是前者是位掩码来实现,比较绕,好处是可以检查多个字段。后者的用法就比较简单,就是把字段名称作为参数,但是只能单个字段。我觉得从代码可读性来说还是UPDATE比较好理解。 TRIGGER_NESTLEV 阅读全文
posted @ 2022-05-20 15:13 Jerry_Chen 阅读(331) 评论(0) 推荐(0) 编辑
摘要:$PARTITION 返回指定的分区函数的分区号 CREATE PARTITION FUNCTION RangePF1 ( INT ) AS RANGE FOR VALUES (10, 100, 1000) ; GO SELECT $PARTITION.RangePF1 (10) ; GO 结果 获 阅读全文
posted @ 2022-02-24 10:20 Jerry_Chen 阅读(83) 评论(0) 推荐(0) 编辑
摘要:SQL Server 2016以后基本没怎么关注过新版本的T-SQL语法更新,今天看了一下,发现了几个字符串相关的函数更新 CONCAT_WS CONCAT_WS是CONCAT的延伸版,以前如果把字段拼起来不是要自己去指定每个字段中间加分割分,例如CONCAT(字段1,',',字段2,',’,字段3 阅读全文
posted @ 2022-02-23 17:11 Jerry_Chen 阅读(216) 评论(0) 推荐(0) 编辑
摘要:安全相关的函数这些可能会有用: CERTENCODED \CERTPRIVATEKEY \LOGINPROPERTY \ORIGINAL_LOGIN \PWDCOMPARE \SESSION_USER \SESSIONPROPERTY \SUSER_ID \SUSER_NAME \SYSTEM_US 阅读全文
posted @ 2022-02-23 11:25 Jerry_Chen 阅读(132) 评论(0) 推荐(0) 编辑
摘要:数据函数里面大部分函数其实日常写代码都不会用到,下面这些是我用过的数学运算函数 ABS和SIGN ABS是返回数值的绝对值,是英文absolute的缩写。而SIGN是返回数值是正负数的标志,1代表大于0的正数,-1代表小于0的负数,0就是数值等于0 FLOOR和CEILING 返回浮点型参数的最高整 阅读全文
posted @ 2022-02-22 14:51 Jerry_Chen 阅读(293) 评论(0) 推荐(0) 编辑
摘要:CHOOSE 如果列是由1开始的枚举值,可以用CHOOSE来转成对应的文字描述 GREATEST和LEAST 这两个是后面才有的,GREATEST可以输出多个列中最大的的列值,有点像列级别的MAX函数。而LEAST就是反过来,多列中的最小值。这里需要注意对NULL值的处理。 IIF 这个可以理解为对 阅读全文
posted @ 2022-02-22 11:26 Jerry_Chen 阅读(430) 评论(0) 推荐(0) 编辑
摘要:获取当前系统日期时间。 取决于:1、精度要求;2、UTC时间还是系统时间;3、要不要带时区 与 GETDATE 和 GETUTCDATE 比较而言,SYSDATETIME 和 SYSUTCDATETIME 的秒的小数部分精度更高。 SYSDATETIMEOFFSET 包含系统时区偏移量。 SYSDA 阅读全文
posted @ 2022-02-21 18:11 Jerry_Chen 阅读(203) 评论(0) 推荐(0) 编辑
摘要:DATALENGTH 返回传入数据真实数据占用子节(bytes)存储大小。举例,把 数值=1的整型传入会得到4,因为整型会占用4个子节长度的数据存储。而如果1是字符,返回1,如果1是unicode,返回2。讲到DATALENGTH,自然会联想到另外一个函数LEN。LEN只适用于字符,而DATALEN 阅读全文
posted @ 2022-02-21 17:09 Jerry_Chen 阅读(191) 评论(0) 推荐(0) 编辑
摘要:先建个成绩表作为测试数据 CREATE TABLE dbo.score ( [class] nvarchar(10), [student] nvarchar(10), [subject_name] nvarchar(10), [score] decimal(4,1) ) INSERT INTO db 阅读全文
posted @ 2022-02-18 16:32 Jerry_Chen 阅读(942) 评论(0) 推荐(0) 编辑
摘要:前段时间接到国内一家潮流鞋品网购平台的大数据工程师的面试,第一轮面试对方工程师提问了不少SQL的例子考我。虽然写了这么多年SQL,但是居然当中有道题给难住了,电话里面答不出来,事后自己才解答了出来。我觉得也确实好久没有遇到这种难的SQL例子,这里写下博文记录一下。 场景:现在有张成绩表(score) 阅读全文
posted @ 2022-02-16 18:43 Jerry_Chen 阅读(635) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示