设为首页 加入收藏

TOP

SqlServer和Oracle中一些常用的sql语句2(一)
2014-11-24 01:24:24 来源: 作者: 【 】 浏览:14
Tags:SqlServer Oracle 一些 常用 sql 语句
SqlServer和 Oracle中一些常用的sql语句2
[sql]
--------------------------------------------------------------
WITH Emp
AS
(
SELECT E.Dept_Id
, Count(*) Emp_Count
FROM Employees E
GROUP BY E.Dept_Id
)
SELECT D.Dept_Name
, E.Emp_Count
FROM Departments D , Emp E
WHERE D.Dept_Id = E.Dept_Id
ORDER BY Emp_Count DESC
--------------------------------------------------------------
/************************************************************
打印99乘法表
************************************************************/
--把重复用到的SQL语句放在with as 里面,取一个别名可用做子查询部分,后面的查询就可以用它
WITH Tally(N) AS
(
SELECT 1 N
--FROM DUAL
UNION ALL
SELECT N + 1 N
FROM Tally
WHERE N < 9
)
SELECT CAST(B.N AS VARCHAR)
+ ' * '
+ CAST(A.N AS VARCHAR)
+ ' = '
+ CAST(A.N * B.N AS VARCHAR)
Result
FROM Tally A
CROSS JOIN Tally B
--------------------------------------------------------------
--SQL SERVER
--用table2中的数据 更新存在于table1的数据
UPDATE table1
SET
table1.UserName = table2.UserName,
table1.Pwd = table2.Pwd
FROM table2
WHERE table1.id=table2.id
---------------------------------------------------------------
--Oracle
UPDATE Emp_Bak E
SET (Salary , Dept_Id)=
(
SELECT A.Salary, A.Dept_Id
FROM Adjustment A
WHERE E.Emp_Id = A.Emp_Id
)
WHERE E.Emp_Id=
(
SELECT A.Emp_Id
FROM Adjustment A
WHERE E.Emp_Id =
A.Emp_Id
)
UPDATE
(
SELECT E.Salary , A.Salary New_Salary
, E.Dept_Id, A.Dept_Id
New_Dept_Id
FROM Emp_Bak E, Adjustment A
WHERE E.Emp_Id = A.Emp_Id
) --(INLINE-VIEW)
SET Salary = New_Salary
, Dept_Id = New_Dept_Id
[sql]
---Oracle和SQLServer补齐字符串的方法
SELECT RIGHT(REPLICATE('0',10)+LTRIM(1234),10); --SQLServer
SELECT LPAD(1234,10,'0') FROM DUAL; --Oracle
--结果 0000001234
[sql]
-----特殊字符 模糊搜索 % _相关处理
SELECT *
FROM
(
SELECT '5% Discount' VAL
--FROM DUAL
UNION ALL
SELECT '59_' VAL
--FROM DUAL
) D
WHERE VAL LIKE '5\%%' ESCAPE '\'
SELECT *
FROM
(
SELECT '5% Discount' VAL
--FROM DUAL
UNION ALL
SELECT '59_' VAL
--FROM DUAL
) D
WHERE VAL LIKE '%\_' ESCAPE '\'
-- 有SQL SERVER特有的
SELECT *
FROM
(
SELECT '5% Discount' VAL
UNION ALL
SELECT '59_' VAL
) D
WHERE VAL LIKE '5[%]%'
--
SELECT *
FROM
(
SELECT '5% Discount' VAL
UNION ALL
SELECT '59_' VAL
) D
WHERE VAL LIKE '%[_]'
------------------------------------------
--正则表达式搜索
--145, ORACLE
SELECT Val
FROM
(
SELECT '123' Val
FROM DUAL
UNION ALL
SELECT '456' FROM DUAL
UNION ALL
SELECT 'ABC' FROM DUAL
UNION ALL
SELECT 'xyz' FROM DUAL
UNION ALL
SELECT '@789' FROM DUAL
UNION ALL
SELECT '789@' FROM DUAL
)
WHERE 1=1
AND REGEXP_LIKE(Val, '^[0-9]') -- 1
--A
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SqlServer和Oracle中一些常用的sq.. 下一篇SQL Server 2008修改表结构出错的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: