前言

  近年来帮客商做数据库优化的时候开采顾客系统选拔了广大函数,自身竟然不通晓是干啥的,好歹做过好几年支出的本身相对无法忍!于是翻了翻资料自个儿攻读了一下无论也分享给群友。

  巧用函数的蛮横成效———小编做开辟的时候就深深的体味到知道二个简短的函数要省去有一点点代码量,让效果很轻松的就能够促成。

  注:以下谈到的点子推行情形急需SQL二零一三及以上版本

 

————–博客地址—————————————————————————————

原作地址: 

如有转发请保留原来的书文地址! 

 

 

废话相当少说,直接开整—————————————————————————————–

 

SELECT CONVERT(VARCHAR(10), DATEADD(dd, number,
CONVERT(VARCHAR(8), GETDATE(), 120)

   
 HaProxy提供高可用性、负载均衡以致基于TCP和HTTP应用的代理,扶助设想主机,它是免费、快捷并且可相信的一种缓慢解决方案。应用到Haproxy重假若因为他免费,而且依据TCP和HTTP的使用代理。

NO.1 PARSE 和 TRY_PARSE 

  PARSE 函数的效果与利益是把字符串值调换到钦定项目,那个回忆以前只在写程序的时候用,今后数据库也能用了

  

1    SELECT PARSE('2016/12/07' AS datetime2 USING 'zh-CN' ) AS Result;   
2    
3    DECLARE @date1 VARCHAR(8);  
4    SET @date1 = CONVERT(VARCHAR(17), GETDATE(), 22);  
5    SELECT PARSE(@date1 AS DATEtime using  'en-GB');  

图片 1

 

  TRY_PARSE 尽管强制调换战败,则赶回 Null。 TKugaY_PACR-VSE
仅用于从字符串调换为日期/时间和数字类型。

  注:默写景况因为您不可能把字符串转变为“DATE”数据类型,所以那条“SELECT”语句就可以报错。然则T-SQL 未来支撑“T途乐Y_PA汉兰达SE”函数,顼名思义就是支撑咱们做调换测验的。

  图片 2

  TRY_PARSE 假若强制转变战败,则赶回 Null。

  图片 3

  别的还应该有TRY_CONVERT 、TRY_CAST函数作用都类似。

  图片 4

 

  具体请参见:

         

  • ’01’), 120) AS dt
    FROM master..spt_values
    WHERE type = ‘P’
    AND DATEADD(dd, number,
    CONVERT(VARCHAR(8), GETDATE(), 120)
  • ’01’) <= DATEADD(dd, -1,
    CONVERT(VARCHAR(8), DATEADD(mm,
    1, GETDATE()), 120)
  • ’01’);

  先介绍一下Haproxy的利用场景,二个是TCP代理,那边也是自身项目中运用的,另一个是HTTP代理,笔者就简介一下。基于Tcp合同的Haproxy代理应用场景:在VPC网络情况下,虚机A的数据库不能够被外界互联网采访到,只可以被在同样内网遭遇下的虚机B访谈,那时候能够经过在虚机B上搭建Haproxy意况,通过Haproxy代理完结外部虚机C对虚机A数据库的访问;这里小编项目中其实运用到的场所是那样的,在国有云上创建凯雷德DS实例,会有VPC网络和Classic互联网,在选择VPC网络创设帕杰罗DS后,在张开数量同步时,会对该牧马人DS数据库实行多少同步,那时候由于昂CoraDS的数据库在VPC网络情状下,外网是无法平素访谈这些凯雷德DS数据库。那时候大家运用的是用两个ECS云服务器上搭建贰个Haproxy代理,公网通过haproxy代理访问那个RubiconDS数据库,那样就化解了VPC互联网的访谈难点;

NO.2  CHOOSE 函数

  CHOOSE
函数的效果与利益是从多少个或八个值的列表中回到多少个值,遵照内定索引值举行决断。索引值是从“1”计起的大背头,也正是该函数的首先个参数。该参数后边跟着就是值列表。

  图片 5

  也能够整合专门的学业那样玩

  图片 6

 

  还是能那样玩

  图片 7

 

  具体请参见:

  基于HTTP公约的Haproxy代理应用场景:客户访谈网站域名时,通过大家设置的Haproxy代理,HTTP需要到后端配置的web服务器上,获得后方服务器重返的剧情后重新包装,响应给客商端;就不啰嗦了,直接来干货,应用haproxy代理访谈后端mysql数据库(这里不必然是mysql数据库)。

 NO.3 IIF 函数

  IIF
函数
支撑测量试验表明式,基于测量试验结果再次来到特定值。“IIF”函数有三个参数:有效的布尔表明式,若是表明式为真回来的值和假使表明式为假再次回到的值。(你能够把“IIF”函数看作是“CASE”诧句的简写版。)

  图片 8

  也得以构成专门的学业那样玩

  图片 9

 

(一)Haproxy下载、安装:网络的能源都要积分,所以从来在yum上找免费能源。

NO.4 CONCAT 函数

  CONCAT 接纳可变多少的字符串参数,并将它们串联成单个字符串。
它需求起码多个输入值;不然将引发错误。
全部参数都隐式调换为字符串类型,然后串联在协同。 Null 值被隐式转换为空字符串。
借使具有参数都为 Null,则赶回 varchar(1) 类型的空字符串。
隐式调换为字符串的长河遵从现有的数据类型调换准绳。

  直接运用字符串 “+”拼接

  

---会返回NULL
declare @a char(10)
set @a = null
select @a + 'a'


---会报错
declare @b int
set @b = 1
select @b + 'a'

 

  contact能够那样玩(全部参数都隐式转变为字符串类型,这里的int 类型
11)

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result; 

  也得以这么玩

SELECT CONCAT(Name, ' (', ProductNumber, ')') AS NewName 
FROM Production.Product 
WHERE ProductID = 970; 

图片 10

 

实际请参见:

 

yum install -y haproxy
rpm -qi haproxy
rpm -ql haproxy

NO.5 DATEFROMPARTS、TIMEFROMPARTS、DATETIMEFROMPARTS 和 DATETIME2FROMPARTS

*  略去概念描述,一看就懂  *

1 SELECT DATEFROMPARTS(2016, 12, 7);  --年,月,日
2 SELECT TIMEFROMPARTS(23, 4, 18, 53, 3);  --时,分,秒,秒的小数部分,精度
3 SELECT DATETIMEFROMPARTS(2016, 12, 7, 23, 4, 18, 53); --年,月,日,时,分,秒,秒的小数部分,默认3位精度
4 SELECT DATETIME2FROMPARTS(2016, 12, 7, 23, 4, 18, 53, 7); --年,月,日,时,分,秒,秒的小数部分,可指定精度

图片 11

 

(二)配置haproxy.cfg文件(重点)

NO.6 EOMONTH 函数

  贰个有趣的函数,重临富含钦点日期的月份的结尾一天(具备可选偏移量)。

  图片 12

  图片 13

 

   具体请参见:

 

cd /etc/haproxy
vim haproxy.cfg

#配置的haproxy.cfg文件
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
        log     global
        log 127.0.0.1 local3
        mode    http
        option httplog
        option  dontlognull
        retries 10
        option redispatch
        maxconn         2000
        timeout http-request    10s                  
        timeout queue           1m                   
        timeout connect         10s                  
        timeout client          1m                   
        timeout server          1m                   
        timeout http-keep-alive 10s                  
        timeout check           10s                  

#后端mysql配置,访问虚机地址+端口号可以访问后端的mysql,例如:192.168.108.133:7306可以访问140/133的mysql数据库
listen  mysql
        bind 0.0.0.0:7306
        mode tcp
        balance roundrobin
        server mysql1 192.168.108.140:3306
     server mysql2 192.168.108.133:3306


#haproxy监听端口(可去掉),访问虚机地址+端口号+/stats可以看到,例如:192.168.108.133:1080/stats
listen stats
        bind 0.0.0.0:1080
        mode http
        option httplog
        maxconn 10
        stats refresh 30s
        stats uri /stats
        stats realm XingCloud\ Haproxy
        stats auth admin:admin #用这个账号登录,可以自己设置
        stats auth Frank:Frank
        stats hide-version
        stats admin if TRUE

NO.7 LAG 与 LEAD

  采访同一结果集中首发展的数码,而用不利用自联接。 LAG 以这两天行在此以前的加以物理偏移量来提供对行的走访。在 SELECT 语句中运用此剖析函数可将近期行中的值与原先行中的值实行相比。

概念相比较模糊上例子一看就精晓了

 1 WITH test
 2 as
 3 (
 4     select NULL as score
 5     UNION ALL
 6     select 10
 7     UNION ALL
 8     select 20
 9     UNION ALL
10     select 30
11     UNION ALL
12     select 40
13     UNION ALL
14     select 50
15 )
16 select ROW_NUMBER() over(order by score) as rownum
17 ,score
18 ,LEAD(score) over(order by score) as nextscore1
19 ,LEAD(score,1) over(order by score) as nextscore2
20 ,LEAD(score,1,0) over(order by score) as nextscore3
21 ,LEAD(score,2) over(order by score) as nextscore4
22 ,LAG(score) over(order by score) as previousscore1
23 ,LAG(score,1) over(order by score) as previousscore2
24 ,LAG(score,1,0) over(order by score) as previousscore3
25 ,LAG(score,2) over(order by score) as previousscore4
26 from test

  具体请参见:

        

(三)创造日志文件/var/log/haproxy/haproxy.log

发表评论

电子邮件地址不会被公开。 必填项已用*标注