SQL:DBMS函数的差异(限制输出结果、拼接字段)

Oracle SQL注入实战:绕过WAF防护的时间盲注与CHR函数技巧 SQL注入作为常见的Web应用安全漏洞,其核心原理在于攻击者通过构造恶意输入,篡改后端数据库查询语句的逻辑,从而窃取、篡改或破坏数据。在防御层面,Web应用防火墙(WAF)通过规则匹配和语义分析等技术,试图拦截此类攻击。然而,攻击者常利用特定数据库的独有特性进行绕过。例如,在Oracle数据库中,利用`CHR()`函数进行ASCII码拼接,可以避免直接出现敏感关键词;结合`CASE WHEN`条件表达式和`DBMS_LOCK.SLEEP`函数,则可实现基于时间延迟的盲注,这种技术对WAF的规则库构成了挑战。 阅读详情

限制输出结果

SQL Serve

select top 5 prod_name
from Products;

DB2

select prod_name
from Products
fetch first 5 rows only;

Oracle

select prod_name
from Products
where rownum <= 5;

MySQL、MariaDB、PostgreSQL、SQLite

select prod_name
from Products
limit 5;

延申:输出从第5行开始的4行数据

#方法一
select prod_name
from Products
limit 4 offset 5 ;

#方法二
select prod_name
from Products
limit 5,4

拼接字段

SQL Serve

#返回数据可能包含列宽
select vend_name + '(' + vend_country + ')'
from Vendors
order by vend_name;

#正确返回格式化数据,去掉多余空格
select rtrim(vend_name) + '(' + rtrim(vend_country) + ')'
from Vendors
order by vend_name;

DB2、Oracle、PostgreSQL、SQLite

select vend_name || '(' || vend_country || ')'
from Vendors
order by vend_name;

#正确返回格式化数据,去掉多余空格
select rtrim(vend_name) || '(' || rtrim(vend_country) || ')'
from Vendors
order by vend_name;

MySQL、MariaDB

select Concat(vend_name, ' (', vend_country, ')')
from Vendors
order by vend_name;

/*
拼接4个元素
	vend_name
	空格+左括号
	vend_country
	右括号
*/

延申:

常用的文本处理函数

函数说明
left()right()返回字符串左边/右边的字符
length()返回字符串的长度
lower()upper()将字符串转换成小写/大写
ltrim()rtrim()trim()去掉字符串左边/右边/两边的空格
substring()提取字符串的组成部分
soundex()返回字符串的soundex值(发音类似)

日期和时间处理函数

SQL Serve

#返回数据可能包含列宽
select order_num
from Orders
where datepart(yy,order_date) = 2020;

PostgreSQL

select order_num
from Orders
where date_part('year',order_date) = 2020;

Oracle

#方法一
select order_num
from Orders
where extract(year from order_date) = 2020;

#方法二
select order_num
from Orders
where order_date between to_date('2020-01-01','yyyy-mm-dd')
	and to_date('2020-12-31','yyyy-mm-dd');

DB2、MySQL、MariaDB

select order_num
from Orders
where year(order_date) = 2020;

SQLite

select order_num
from Orders
where strftime('%Y',order_date) = '2020';

DBMS函数的差异汇总

函数语法
提取字符串的组成部分DB2、Oracle、PostgreSQL、SQLite 使用substr()
MySQL、MariaDB、SQL Server 使用 substring()
数据类型转换Oracle 使用多个函数,每个类型转换对应一个函数
DB2、PostgreSQL使用cast()
MySQL、MariaDB、SQL Server 使用 convert()
提取当前日期DB2、PostgreSQL使用current_date()
MySQL、MariaDB使用curdate()
Oracle使用sysdate
SQL Server使用getdate()
SQLite 使用date()

未完待遇

达梦数据库 TEXT 字段查询:5种函数转换方案对比与性能实测 本文深入探讨了达梦数据库中TEXT字段查询时常见的数据类型不匹配问题,提供了TO_CHAR、CAST、CONVERT、DBMS_LOB.SUBSTR和TEXT_EQUAL五种转换方案的详细对比与性能实测。针对不同场景给出了优化建议,帮助开发者高效处理大文本数据查询,特别适合从MySQLOracle迁移到达梦数据库的环境。 阅读详情

相关推荐

别再直接调用DBMS_OBFUSCATION_TOOLKIT了!手把手教你封装一个实用的Oracle MD5加密函数

本文深入探讨Oracle数据库开发中MD5加密的最佳实践,揭示直接调用DBMS_OBFUSCATION_TOOLKIT的常见陷阱,并提供企业级封装方案。通过实战代码演示如何构建健壮的加密函数,解决字符集兼容、加盐机制和性能优化等关键问题,助力开发者提升数据安全防护能力。

weixin_42535703的博客 266

MySQL基础

按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。

LuerFly的博客! 262

附录D SQL入门之SQL数据类型

介绍主要的数据类型、用途、兼容性等问题

warlack007的博客 1046

SparkSQL中控制文件输出数量

Coalesce and Repartition Hint或者 spark.sql.adaptive.enabled和spark.sql.adaptive.coalescePartitions.enabled为true

qq_45124566的博客 3804

dbms_sql笔记(具体函数和示例)

具体函数可以参照官网 https://docs.oracle.com/cd/E11882_01/timesten.112/e21645/d_sql.htm#TTPLP71282 或者博客园这篇 DBMS_SQL使用 示例参考https://blog.51cto.com/aaron521/2165969?source=dra 调用dbms_sql需要执行五个步骤  1.打开一个游标  2.分析要执行的语句  3.绑定可能需要的任何输入变量  4.执行语句  5.关闭游标 */ DECLARE CUR

wj的博客 993

不同数据库的限制结果输出的不同写法

不同数据库的限制结果输出的不同写法SQL Server和Access中使用SELECT时,可以使用TOP关键字来限制最多返回多少行,如下所示:使用的是DB2,很可能习惯使用下面这一DBMS特定的SQL语句,像这样:使用Oracle,需要基于ROWNUM(行计数器)来计算行,像这样:使用MySQLMariaDBPostgreSQL或者SQLite,需要使用LIMIT子句,像这样: SELECT语句返回指定表中所有匹配的行,很可能是每一行。 返回第一行或者一定数量的行,该怎么办呢?这是可行的,然而遗憾的是,

qq_41720578的博客 308

sql查询最新记录

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。 代码: SELECT

qingzhouzhen的专栏 3052

SQL()

SQL是structured query language(结构化查询语言)的缩写。SQL是一种专门用来与数据库沟通的语言,SQL是一种强有力的语言。

weixin_74399377的博客 290

去重DISTINCT、限制LIMIT、排序ORDER BY

DISTINCT:去重,字面意思,去除重复的数据。使用时需要注意,使用此关键字是对查询列的去重。 语法:SELECT DISTINCT 字段1,字段2... FROM 表名。 LIMIT:限制查询结果的行数。想要返回多少行数据。各数据库是存在差异的,MYSQLSQLite等数据库使用LIMIT,ORACLE数据库多数使用行计数器ROWNUM,SQL SERVER 则是使用 TOP。 LIMIT语法:SELECT 字段1,字段2... FROM 表名 LIMIT 3 。LIMIT语句放在查询的最后一行,

weixin_44813544的博客 1940

SQL经典实例

文档通过大量实例展示了SQL在数据操作中的核心技术,从基础查询到高级聚合、字符串处理、元数据查询等,覆盖多数据库差异,强调实际应用中的最佳实践(如处理Null值、避免笛卡儿积、合理使用索引等)。每个实例结合问题、解决方案和讨论,帮助读者理解不同场景下的SQL策略,是SQL开发和优化的重要参考。

weixin_39789796的博客 2236

三大主流数据库SQL注入差异详解,实战避坑不踩雷

文章摘要:本文深入剖析MySQLOracleSQLServer三大数据库的注入差异,包括核心特性、专属函数和实战payload。MySQL适合新手入门,Oracle语法严谨需精准适配,SQLServer堆叠注入危害大。渗透前需识别数据库类型,针对性选择payload提升成功率。文末提供网络安全学习路线,从初级到高级系统规划,帮助零基础者快速入门并进阶。

wangluo12138的博客 391

SQL必知必会笔记(上)

第1课 了解 SQL SQL(Structured Query Language)是一种专门用来与数据库沟通的语言。 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。 人们通常用数据库这个术语来代表他们使用的数据库软件,这是不正确的,也因此产生了许多混淆。确切地说,数据库软件应称为数据库管理系统(DBMS)。数据库是通过 DBMS 创建和操纵的容器,而具体它究竟是...

weixin_34401479的博客 315

[笔记]流行数据库SQL差异分析之“限制结果集行数”

前言:近期所参与的项目共涉及了三种数据库,SQLServer、OracleMySQL。所以就找来这些资料,并记录为笔记供以后参考。 限制结果集行数 在进行数据检索的时候需要只检索结果集中的部分行,比如说“检索成绩排前三名的学生”、“检索工资水平排在第3位到第7位的员工信息”,这种功能被称为“限制结果集行数”。虽然主流的数据库系统中都提供了限制结果集行数的方法,但是无论是语法还是使用...

angnong3282的博客 426

Word·去掉复制粘贴自动添加的空格

阅文时长 | 0.05分钟 字数统计 | 145.6字符 主要内容 | 1、引言&背景 2、声明与参考资料 『Word·去掉复制粘贴自动添加的空格』 编写人 | SCscHero 编写时间 | 2021/4/6 AM12:2 文章类型 | 系列 完成度 | 已完成 座右铭 每一个伟大的事业,都有一个微不足道的开始。 一、引言&背景   完成度:100% a) 应对问题 如图,Word中复制粘..

SCscHero的博客 2297

SQL 限制查询结果

SQL查询结果只显示指定的行项目。举例:只显示查询结果的前5行。SQL SERVER:select top 5 '列名' from '表名';ORACLE:select '列名' from '表名' where rownum <=5 ; 转载于:https://blog.51cto.com/dabaiyang/1941634...

weixin_33675507的博客 343

PLSQL导出大量数据-超出excel限制,使用csv

当数据行数超过6W多的时候,Excel2003版的就无法装下,因而无法导出。此时可以使用export>csv格式…导出的时候使用csv格式对于长度过长的数字会变成科学计数法,因而变短。。这时在导出的查询语句中做如下处理假如一个表有sfzh身份证号,表名tablename:personal select sfzh from personal;这样的结果,身份证导出的结果肯定不是我们想要的

LT-CAT努力前进 2万+

控制台输出sql语句

logger name="com.yz" level="debug" />

一只喜欢学习的猪仔 3445
上一篇: python 链接mongo的若干问题解决
下一篇: python 解决约瑟夫环问题
范儿札记
博客等级 码龄7年 125粉丝 27原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值