select函数

Oracle中exists替代in语句

自古美人都是妖i 提交于 2019-12-06 04:14:59
简介   大家都知道exists的速度要比in的速度快,也知道exists函数返回一个布尔值,也就是说exists函数里最后要是 a.id =b.id类似这种方式结束。 example: 常规方式 SELECT * FROM TBL_REBATE_DAY_COUNT WHERE ID IN (1, 2, 3, 4, 5); exists方式: SELECT * FROM TBL_REBATE_DAY_COUNT a WHERE exists (SELECT * FROM TBL_ALGO_RECORD b WHERE a.ID = b.ID); 温馨提示   为了演示这里我用了*,实际生产中不推荐大家写*号。 来源: https://www.cnblogs.com/chenyanbin/p/11961340.html

带外数据

空扰寡人 提交于 2019-12-06 03:23:59
  许多传输层有带外数据的概念,它有时也称为经加速数据。其想法是一个连接的某端发生了重要的事情,而且该端希望迅速通告其对端。这里“迅速”意味着这种通知应该在已排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。也就是说,带外数据被认为具有比普通数据更高的优先级。带外数据并不需要在客户和服务器之间再使用一个连接,而是被映射到已有的连接中。   不幸的是,一旦超越普通概念光临现实世界,我们发现几乎每个传输层都各自有不同的带外数据实现。而UDP作为一个极端的例子,没有实现带外数据。 TCP带外数据   TCP并没有真正的带外数据,不过提供了我们接着要说的紧急模式。假设一个进程已经往一个TCP套接字写出N字节数据,而且TCP把这些数据排队在该套接字的发送缓冲区中,等着发送到对端。如图展示了这样的套接字发送缓冲区,并且标记了从1到N的数据字节。   该进程接着以MSG_OOB标志调用send函数写出一个含有ASCII字符a的单字节带外数据: send(fd,"a",1,MSG_OOB);   TCP把这个数据放置在该套接字发送缓冲区的下一个可用位置,并把该连接的TCP紧急指针设置成再下一个可用位置。如图展示了此时的套接字发送缓冲区,并且把带外字节标记为:“OOB”。   TCP紧急指针对应一个TCP序列号,它是使用MSG_OOB标志写出的最后一个数据字节(即带外字节)对应的序列号加1

sql 字符串 切割函数 FUN_Split

假装没事ソ 提交于 2019-12-06 00:15:25
IF EXISTS ( SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FUN_Split]') AND OBJECTPROPERTY(id, N'IsTableFunction') = 1 ) DROP FUNCTION [dbo].[FUN_Split] GO --分割字符串函数 Create FUNCTION [dbo].[FUN_Split] ( @SplitString nvarchar(max), --源字符串 @Separator nvarchar(10)=' ' --分隔符号,默认为空格 ) RETURNS @SplitStringsTable TABLE --输出的数据表 ( [id] int identity(1,1), [value] nvarchar(max) ) AS BEGIN DECLARE @CurrentIndex int; DECLARE @NextIndex int; DECLARE @ReturnText nvarchar(max); SELECT @CurrentIndex=1; WHILE(@CurrentIndex<=len(@SplitString)) BEGIN SELECT @NextIndex=charindex(@Separator,@SplitString

浅析tornado 中demo的 blog模块

瘦欲@ 提交于 2019-12-05 23:29:26
​#!/usr/bin/env python # # Copyright 2009 Facebook # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import

sql之查询语句的基本操作详解

China☆狼群 提交于 2019-12-05 21:56:55
Select查询语句分类 简单查询语句 从一个表中查询数据 复杂查询语句 多表连接查询 (将来源于多个表的列横向叠加) 内连接 左连接 右连接 全连接 自连接 非等值连接 n 复合查询(将查询结果集上下叠加) Union Union All Intersect Minus n 子查询 非关联子查询 关联子查询 查询语句语法结构 SELECT select_list #select_list 要显示的列,列之间用逗号隔开,列也称作投影 [ INTO new_table ] # 结果集导入新表 FROM [table_source] #表名 [ WHERE search_condition ] #表行过滤条件 [ GROUP BY group_by_expression ] #按照指定的列将表行分组 [ HAVING search_condition ] #对分组后的新行进行过滤 [ ORDER BY order_expression [ ASC | DESC ] ] #按照指定的1个或多个列进行排序,ASC增序,DESC降序 select中常用运算符 算数运算符: + 加法运算 - 减法运算 * 乘法运算 /或DIV 除法运算 % 或MOD 求余运算 逻辑运算符: and 而且 or 或者 xor 异或 not或! 非 比较运算符: = 等于 != 或<>不等于 > 大于 < 小于

PostgreSQL JSON 处理

一曲冷凌霜 提交于 2019-12-05 19:12:47
一、将结果集封装成JSON 关于如何查询返回 JSON, 这里 有例子,翻译如下: 一个简单的用法就是使用 row_to_json() 函数,它接受 “行值”并返回 JSON 对象: 1 select row_to_json(tableName) from tableName; 上面查询语句返回结果类似如下: 1 { "id" :6013, "text" : "advancement" , "pronunciation" : "advancement" ,...} 但是有时候我们只需要查询指定的列,那么我们可以使用 row() 结构函数: select row_to_json(row(id, text)) from tableName; 上面查询语句返回了我们想要的结果,可惜丢失了列名: 1 { "f1" :6013, "f2" : "advancement" } 为了完善这个需求,我们必须创建一个行类型且将结果转换(cast)到这个行类型,或者使用子查询。子查询会更容易一些: 1 2 3 4 select row_to_json(t) from ( select id, text from tableName ) AS t 上面查询语句返回了我们希望的样子: 1 { "id" :6013, "text" : "advancement" } 另一种常用的技术是 array_agg

sqlserver取字符串拼音首字母

孤人 提交于 2019-12-05 18:58:39
原文: sqlserver取字符串拼音首字母 sqlserver 使用函数获取一个字符串的拼音首字母 create function dbo.fn_getpinyin ( @str nvarchar(max) ) returns nvarchar(max) as begin declare @word nchar(1),@PY nvarchar(max) set @PY='' while len(@str)>0 begin set @word=left(@str,1) --如果非汉字字符,返回原字符 set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 then (select top 1 PY from ( select 'A' as PY,N'驁' as word union all select 'B',N'簿' union all select 'C',N'錯' union all select 'D',N'鵽' union all select 'E',N'樲' union all select 'F',N'鰒' union all select 'G',N'腂' union all select 'H',N'夻' union all select 'J',N'攈' union all

SQL笔记

我们两清 提交于 2019-12-05 15:37:16
目录 1.常用的代码中的sql查询方式 2.union注入 3.盲注(布尔,延时) 3.1常用函数 3.2盲注语句 4.报错盲注 4.1函数 4.2注入语句 5.mysql读写文件的两个函数 5.1 load_file() 5.2 outfile 6.sql注入的时候编码问题 7.update 注入 8.insert注入 9.sql语句的执行逻辑 10.过滤函数 11.过滤 #,-- 12.约束攻击 13.宽字节注入 14.order by 注入 1.常用的代码中的sql查询方式 //单引号保护 ?id=1' and 1=1--+ $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; //没有保护,一般查询纯数字类型的数据 ?id=1 and 1=1--+ $sql="SELECT * FROM users WHERE id= $id LIMIT 0,1"; //单引号与小括号保护 ?id=1') and 1=1--+ $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"; //双引号与小括号保护 ?id=1") and 1=1--+ $sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1"; //双引号保护 ?id=1"

MySQL日期时间函数大全

僤鯓⒐⒋嵵緔 提交于 2019-12-05 14:46:00
DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03');   -> 3 WEEKDAY(date)  返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04 22:23:00');   -> 5 mysql> select WEEKDAY('1997-11-05');   -> 2 DAYOFMONTH(date)  返回date是一月中的第几日(在1到31范围内) mysql> select DAYOFMONTH('1998-02-03');   -> 3 DAYOFYEAR(date)  返回date是一年中的第几日(在1到366范围内) mysql> select DAYOFYEAR('1998-02-03');   -> 34 MONTH(date)  返回date中的月份数值 mysql> select MONTH('1998-02-03');   -> 2 DAYNAME(date)  返回date是星期几(按英文名返回) mysql> select DAYNAME("1998-02-05");   -> 'Thursday' MONTHNAME

储存过程

霸气de小男生 提交于 2019-12-05 07:09:16
存储过程是一种sql的语句集,其优点相对批量执行来说,有更高的执行效率; 使用 语法 DROP PROCEDURE IF EXISTS `过程名`; CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) 过程体 如下BEGIN和END之间是过程体 fun 过程名 带一个int类型的输出参数s DELIMITER ;; CREATE PROCEDURE fun(OUT s int) BEGIN // sql END DELIMITER ; 简单存储过程 DROP PROCEDURE IF EXISTS `funa`; DELIMITER ;; CREATE PROCEDURE `funa`() BEGIN SELECT 1; END;; DELIMITER ; CALL funa() ; 如上定义了一个存储过程funa,并且调用了该存储过程; DELIMITER 定义语句的结束符号; 带输入参数 # define DROP PROCEDURE IF EXISTS `funa`; DELIMITER ;; CREATE PROCEDURE funa(IN p int) BEGIN SELECT p; END; ;; DELIMITER ; # call SET @p=1; CALL funa