SQL Server到Oracle的转换

   2023-02-09 学习力0
核心提示:SQL到Oracle的转换 column1 bigint 8 NUMBER(19) column2 binary 50 RAW(50) column3 bit 1 NUMBER(2) column4 char 10 CHAR(10) column5 datetime 8 DATE column6 decimal 9 NUMBER(18) column7 float 8 BINARY_DOUBLE column8 image 16 BLOB colum

SQL到Oracle的转换

 

column1 bigint 8 NUMBER(19) 
column2 binary 50 RAW(50) 
column3 bit 1 NUMBER(2) 
column4 char 10 CHAR(10) 
column5 datetime 8 DATE 
column6 decimal 9 NUMBER(18) 
column7 float 8 BINARY_DOUBLE 
column8 image 16 BLOB 
column9 int 4 NUMBER(10) 
column10 money 8 NUMBER(19,4) 
column11 nchar 10 NCHAR(10) 
column12 ntext 16 NCLOB 
column13 numeric 9 NUMBER(18) 
column14 nvarchar 50 NVARCHAR2(50) 
column15 real 4 BINARY_FLOAT 
column16 smalldatetime 4 DATE 
column17 smallint 2 NUMBER(5) 
column18 smallmoney 4 NUMBER(10,4) 
column19 sql_variant BLOB 
column20 text 16 CLOB 
column21 timestamp 8 RAW(8) 
column22 tinyint 1 NUMBER(3) 
column23 uniqueidentifier 16 BLOB 
column24 varbinary 50 RAW(50) 
column25 varchar 50 VARCHAR2(50) 

 
 

Create Table dbo.BQ_LONGORDER_MATERIAL_M(OnlyID number(10) NOT NULL ,
InhospitalNo number(10) default 0 NOT NULL,Kind number(3) default 0 NOT NULL,
GroupByNo number(10) default 0 NOT NULL,Code number(10) default 0 NOT NULL,
MaterialSource number(3) default 0 NOT NULL,ItemUnit char(10) default '' NOT NULL,
Spec char(10) default '' NOT NULL,Price number(10,4) default 0 NOT NULL,
Quantity number(10,4) default 0 NOT NULL,Expenses number(10,4) default 0 NOT NULL,
PerfDept number(5) default 0 NOT NULL,constraint PK_ID primary key (OnlyID));

 
 
 

select * from user_all_tables; Oracle中查找表名
或用sysadq.TableExists(1) 0:本地 1:远程

 
 

[oledb]
; Everything after this line is an OLE DB initstring
Provider=OraOLEDB.Oracle.1;Password=sj13801300;Persist Security Info=True;User ID=dbo;Data Source=his40

 
 

SQLServer和Oracle常用函数对比[zt]

 
 
 

数学函数
  1.绝对值 
  S:select abs(-1) value
  O:select abs(-1) value from dual 

 

  2.取整(大) 
  S:select ceiling(-1.001) value 
  O:select ceil(-1.001) value from dual

 

  3.取整(小) 
  S:select floor(-1.001) value 
  O:select floor(-1.001) value from dual

 

  4.取整(截取)
  S:select cast(-1.002 as int) value 
  O:select trunc(-1.002) value from dual 

 

  5.四舍五入
  S:select round(1.23456,4) value 1.23460
  O:select round(1.23456,4) value from dual 1.2346

 

  6.e为底的幂 
  S:select Exp(1) value 2.7182818284590451 
  O:select Exp(1) value from dual 2.71828182

 

  7.取e为底的对数
  S:select log(2.7182818284590451) value 1
  O:select ln(2.7182818284590451) value from dual; 1

 

  8.取10为底对数
  S:select log10(10) value 1
  O:select log(10,10) value from dual; 1

 

  9.取平方
  S:select SQUARE(4) value 16
  O:select power(4,2) value from dual 16

 

  10.取平方根
  S:select SQRT(4) value 2
  O:select SQRT(4) value from dual 2

 

  11.求任意数为底的幂
  S:select power(3,4) value 81
  O:select power(3,4) value from dual 81

 

  12.取随机数
  S:select rand() value 
  O:select sys.dbms_random.value(0,1) value from dual;

 

  13.取符号
  S:select sign(-8) value -1
  O:select sign(-8) value from dual -1

 

  14.圆周率
  S:SELECT PI() value 3.1415926535897931
  O:select acos(-1) PI from dual; select exp(1) e from dual;

 

  15.sin,cos,tan 参数都以弧度为单位
  例如:select sin(PI()/2) value 得到1(SQLServer)

 

  16.Asin,Acos,Atan,Atan2 返回弧度

 

  17.弧度角度互换(SQLServer,Oracle不知道)
  DEGREES:弧度-〉角度
  RADIANS:角度-〉弧度

 

数值间比较

 

  18. 求集合最大值
  S:select max(value) value from 
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

 

  O:select greatest(1,-2,4,3) value from dual

 

  19. 求集合最小值
  S:select min(value) value from 
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

 

  O:select least(1,-2,4,3) value from dual

 

  20.如何处理null值(F2中的null以10代替)
  S:select F1,IsNull(F2,10) value from Tbl
  O:select F1,nvl(F2,10) value from Tbl

 

  21.求字符序号
  S:select ascii(''a'') value
  O:select ascii(''a'') value from dual

 

  22.从序号求字符
  S:select char(97) value
  O:select chr(97) value from dual

 

  23.连接
  S:select ''11''+''22''+''33'' value
  O:select CONCAT(''11'',''22'')||33 value from dual

 

23.子串位置 --返回3
  S:select CHARINDEX(''s'',''sdsq'',2) value 
  O:select INSTR(''sdsq'',''s'',2) value from dual

 

  23.模糊子串的位置 --返回2,参数去掉中间%则返回7
  S:select patindex(''%d%q%'',''sdsfasdqe'') value 
  O:oracle没发现,但是instr可以通过第四个参数控制出现次数
  select INSTR(''sdsfasdqe'',''sd'',1,2) value from dual 返回6

 

  24.求子串
  S:select substring(''abcd'',2,2) value 
  O:select substr(''abcd'',2,2) value from dual

 

  25.子串代替 返回aijklmnef
  S:SELECT STUFF(''abcdef'', 2, 3, ''ijklmn'') value
  O:SELECT Replace(''abcdef'', ''bcd'', ''ijklmn'') value from dual

 

  26.子串全部替换
  S:没发现
  O:select Translate(''fasdbfasegas'',''fa'',''我'' ) value from dual

 

  27.长度
  S:len,datalength
  O:length

 

  28.大小写转换 lower,upper

 

  29.单词首字母大写
  S:没发现
  O:select INITCAP(''abcd dsaf df'') value from dual

 

  30.左补空格(LPAD的第一个参数为空格则同space函数)
  S:select space(10)+''abcd'' value
  O:select LPAD(''abcd'',14) value from dual

 

  31.右补空格(RPAD的第一个参数为空格则同space函数)
  S:select ''abcd''+space(10) value
  O:select RPAD(''abcd'',14) value from dual

 

  32.删除空格
  S:ltrim,rtrim
  O:ltrim,rtrim,trim

 

  33. 重复字符串
  S:select REPLICATE(''abcd'',2) value 
  O:没发现

 

  34.发音相似性比较(这两个单词返回值一样,发音相同)
  S:SELECT SOUNDEX (''Smith''), SOUNDEX (''Smythe'')
  O:SELECT SOUNDEX (''Smith''), SOUNDEX (''Smythe'') from dual
  SQLServer中用SELECT DIFFERENCE(''Smithers'', ''Smythers'') 比较soundex的差
  返回0-4,4为同音,1最高

 

日期函数
  35.系统时间
  S:select getdate() value
  O:select sysdate value from dual

 

  36.前后几日
  直接与整数相加减

 

  37.求日期
  S:select convert(char(10),getdate(),20) value
  O:select trunc(sysdate) value from dual
  select to_char(sysdate,''yyyy-mm-dd'') value from dual

 

  38.求时间
  S:select convert(char(8),getdate(),108) value
  O:select to_char(sysdate,''hh24:mm:ss'') value from dual

 

39.取日期时间的其他部分
  S:DATEPART 和 DATENAME 函数 (第一个参数决定) 
  O:to_char函数 第二个参数决定

 

  参数---------------------------------下表需要补充
  year yy, yyyy 
  quarter qq, q (季度)
  month mm, m (m O无效)
  dayofyear dy, y (O表星期)
  day dd, d (d O无效)
  week wk, ww (wk O无效)
  weekday dw (O不清楚)
  Hour hh,hh12,hh24 (hh12,hh24 S无效)
  minute mi, n (n O无效)
  second ss, s (s O无效)
  millisecond ms (O无效)
  ----------------------------------------------

 

  40.当月最后一天
  S:不知道
  O:select LAST_DAY(sysdate) value from dual

 

  41.本星期的某一天(比如星期日)
  S:不知道
  O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

 

  42.字符串转时间
  S:可以直接转或者select cast(''2004-09-08''as datetime) value
  O:SELECT To_date(''2004-01-05 22:09:38'',''yyyy-mm-dd hh24-mi-ss'') vaule FROM DUAL;

 

  43.求两日期某一部分的差(比如秒)
  S:select datediff(ss,getdate(),getdate()+12.3) value
  O:直接用两个日期相减(比如d1-d2=12.3)
  SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

 

  44.根据差值求新的日期(比如分钟)
  S:select dateadd(mi,8,getdate()) value
  O:SELECT sysdate+8/60/24 vaule FROM DUAL;

 

  45.求不同时区时间
  S:不知道
  O:SELECT New_time(sysdate,''ydt'',''gmt'' ) vaule FROM DUAL;

 

  -----时区参数,北京在东8区应该是Ydt-------
  AST ADT 大西洋标准时间
  BST BDT 白令海标准时间
  CST CDT 中部标准时间
  EST EDT 东部标准时间
  GMT 格林尼治标准时间
  HST HDT 阿拉斯加?夏威夷标准时间
  MST MDT 山区标准时间
  NST 纽芬兰标准时间
  PST PDT 太平洋标准时间
  YST YDT YUKON标准时间

 
 
 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • sql:mysql:函数:TIMESTAMPDIFF函数实现TimeStamp字段相减,求得时间差
    sql:mysql:函数:TIMESTAMPDIFF函数实现TimeS
     函数内指定是minute,则最终结果value值的单位是分钟,如果函数内指定为hours,则最终结果value值单位为小时。//UPLOAD_TIME 减去 CREATE_DTTM 求得时间差,以分钟数计时select avg(TIMESTAMPDIFF(MINUTE,CREATE_DTTM,UPLOAD_TIME)) value,LEFT(CREATE_DTTM
    03-08
  • 去重复的sql(Oracle) 去重复的英文
    1.利用group by 去重复2.可以利用下面的sql去重复,如下  1) select id,name,sex from (select a.*,row_number() over(partition by a.id,a.set order by name) su from test a ) where su=1  2)select id,name,sex from (select a.*,row_number() over(p
    02-10
  • Oracle SQL七次提速技巧
    以下SQL执行时间按序号递减。1,动态SQL,没有绑定变量,每次执行都做硬解析操作,占用较大的共享池空间,若共享池空间不足,会导致其他SQL语句的解析信息被挤出共享池。create or replace procedure proc1as beginfor i in 1..100000 loop    execute imme
    02-10
  • Oracle\SQL  Server等及其他基本语句写法
    Oracle\SQL Server等及其他基本语句写法
    Oracle\SQL  Server等及其他基本语句写法目录一.Excel相关 11.Excel中写脚本范例: 12.提取字节 23. 提取单元格内字符 24.VLOOKUP函数: 2二.SQL语句汇总 21.建表: 22.增 33.删 44.查 65.改 236.Alter的应用 24三.数据库备份与恢复脚本 261. Oracle: 2
    02-10
  • SQL ORACLE case when函数用法
    case when 用法(1)简单case函数:格式:  case 列名   when 条件值1 then 选项1  when 条件值1 then 选项2......  else 默认值 end例如:  select   case job_level  when '1' then '1111'  when '2' then '2222'   when '3' then '3333
    02-10
  • mysql下如何执行sql脚本 执行SQL脚本
    1.编写sql脚本,假设内容如下:  create database dearabao;  use dearabao;  create table niuzi (name varchar(20));  保存脚本文件,假设我把它保存在F盘的hello world目录下,于是该文件的路径为:F:\hello world\niuzi.sql2.执行sql脚本,可以有2种方法: 
    02-10
  • MySQL 5.7版本sql_mode=only_full_group_by问题
    用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'col_user_6.a.START_TIME' which is not functionally dependent on colu
    02-10
  • Oracle迁移到MySQL性能下降的注意点 oracle数据
    背景:最近有较多的客户系统由原来由Oracle改造到MySQL后出现了性能问题CPU 100%,或是后台的CRM系统复杂SQL在业务高峰的时候出现堆积导致业务故障。在我的记忆里面淘宝最初从Oracle迁移到MySQL期间也遇到了很多SQL的性能问题,记忆最为深刻的子查询,当初的
    02-10
  • ORACLE中通过SQL语句(alter table)来增加、删除
    1.添加字段:alter table  表名  add (字段  字段类型)  [ default  '输入默认值']  [null/not null]  ;2.添加备注:comment on column  库名.表名.字段名 is  '输入的备注';  如: 我要在ers_data库中  test表 document_type字段添加备注  comm
    02-10
  • MySQL与Oracle 差异比较之六触发器
    触发器编号类别ORACLEMYSQL注释1创建触发器语句不同create or replace trigger TG_ES_FAC_UNIT  before insert or update or delete on ES_FAC_UNIT  for each rowcreate trigger `hs_esbs`.`TG_INSERT_ES_FAC_UNIT` BEFORE INSERT on `hs_esbs`.`es_fac_u
    02-10
点击排行