精华内容
下载资源
问答
  • # featurewise_std_normalization=True #将输入除以数据集的标准差以完成标准化 # rescale=1./255,#重放缩因子,默认为None. 如果为None或0则不进行放缩,否则会将该数值乘到数据上(在应用其他变换之前) # zca_...

    在服务器上安装opencv遇到跟CUDA8.0不适配的问题,于是不得不看看其他机器是否可以预装并使用。
    .


    一、python+opencv3.2安装

    opencv在windows安装为啥这么简单?
    安装流程:
    1、下载opencv文件opencv-3.2.0-vc14.exe
    2、点击下载,其实就是解压过程,随便放在一个盘里面。
    3、python部署阶段,
    进入OpenCV的安装目录下找到+复制:\build\python\2.7\x64\cv2.pyd
    将cv2.pyd复制到python的子目录:\Lib\site-packages\
    4、即可直接调用:

    import cv2

    .


    二、windows+keras/theano

    Keras深度学习框架是基于Theano或Tensorflow框架安装的,所以首先要准备底层框架的搭建,用tensorflow比较麻烦,所以选用Theano安装即可。

    1、tensorflow/keras框架

    同时如果要使用tensorflow0.12版本+python3.5及以上,也可以使用Anaconda 3.5.
    一种比较好的方式使用docker:
    参考:TensorFlow 官方文档中文版、下载与安装

    如果要使用原生的window安装:

    • (1)前提:现有了python3.5或Anaconda 3.5
    • (2)下载:tensorflow-0.12.0rc0-cp35-cp35m-win_amd64.whl,下载的东西放在某文件夹中
    • (3)在Power Shell中输入下述命令实现本地安装:
    pip install F:\DevResources\tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64.whl
    • (4)验证安装

    到“所有程序”下找到”Python 3.5 64bit”,出现命令窗口,输入测试代码:

    >>>import tensorflow as tf
    >>>sess = tf.Session()
    >>>a = tf.constant(10)
    >>>b = tf.constant(22)
    >>>print(sess.run(a + b))
    32

    正确输出32则为成功安装。

    报错无法正常下载numpy 1.11.0:参考博客:原生Windows安装TensorFlow 0.12方法
    .

    2、theano/keras框架

    安装过程:

    • (1)安装theano,Power Shell中输入:
    pip install theano -U --pre
    • (2)安装keras:
    pip install keras -U --pre
    • (3)修改默认后端:很关键,不然会一直报错:ImportError: No module named tensorflow
      因为,keras默认后端是给tensorflow,
      打开C:\Users\当前用户名.keras,修改文件夹内的keras.json文件如下:
    {
    "image_dim_ordering":"th",
    "epsilon":1e-07,
    "floatx":"float32",
    "backend":"theano"
    }
    • (4)验证安装
    >>>import keras
    Using Theano(Tensorflow) backend.
    >>>

    当然,还有theano的加速模式,可参考: Keras安装和配置指南(Windows)
    .


    三、用python+keras/theano进行图像增强(Data Augmentation)

    1、图像增强的方式

    以下一共有8中图像变换的方式:

    • 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;
    • 翻转变换(flip): 沿着水平或者垂直方向翻转图像;
    • 缩放变换(zoom): 按照一定的比例放大或者缩小图像;
    • 平移变换(shift): 在图像平面上对图像以一定方式进行平移; 可以采用随机或人为定义的方式指定平移范围和平移步长,
      沿水平或竖直方向进行平移. 改变图像内容的位置;
    • 尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想,
      利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;
    • 对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变.
      对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;
    • 噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;
    • 颜色变换(color): 在训练集像素值的RGB颜色空间进行PCA, 得到RGB空间的3个主方向向量,3个特征值
      .

    2、图像增强的案例

    网上有一个极为广泛的套路,参考博客《深度学习中的Data Augmentation方法和代码实现》、《深度学习中的数据增强实现(Data Augmentation)》、《keras中文文档-图片预处理》

    from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
    
    # 主要的增强函数
    datagen = ImageDataGenerator(
            rotation_range=0.2,
            # 整数,旋转范围, 随机旋转(0-180)度
            width_shift_range=0.2,
            # 浮点数,以图像的长宽小部分百分比为变化范围进行横向平移
            height_shift_range=0.2,
            # 浮点数,以图像的长宽小部分百分比为变化范围进行竖直平移
            shear_range=0.2,
            # 浮点数,水平或垂直投影变换
            zoom_range=0.2,
            # 浮点数,随机缩放的幅度,[lower,upper] = [1 - zoom_range, 1+zoom_range]
            horizontal_flip=True,
            # 布尔值,进行随机水平翻转
            fill_mode='nearest')
            # 填充像素,超出边界时,有四种方式:‘constant’、‘nearest’、‘reflect’、‘wrap’
    # featurewise_center=True  # 使输入数据集去中心化(均值为0)
    # featurewise_std_normalization=True #将输入除以数据集的标准差以完成标准化
    # rescale=1./255,#重放缩因子,默认为None. 如果为None或0则不进行放缩,否则会将该数值乘到数据上(在应用其他变换之前)
    # zca_whitening=True #对输入数据施加ZCA白化
    # channel_shift_range=0.2 #随机通道偏移的幅度
    # vertical_flip=True #布尔值,进行随机竖直翻转
    
    
    
    #数据导入
    img = load_img('C:\\Users\\Desktop\\003.jpg')  
    x = img_to_array(img)  
    x = x.reshape((1,) + x.shape)  
    # the .flow() command below generates batches of randomly transformed images
    # and saves the results to the `preview/` directory
    i = 0
    for batch in datagen.flow(x, 
                              batch_size=1,
                              save_to_dir='C:\\Users\\Desktop',  
                              #存放文件夹
                              save_prefix='lena', 
                              #存放文件名字
                              save_format='jpg'):
        i += 1
        if i > 20:
            break 

    其中:
    ImageDataGenerator是图像增强的主要函数,里面包含了很多类型的增强方法
    load_img、img_to_array、x.reshape图像载入函数
    datagen.flow,增强执行函数

    其中:

    • load_img函数:
    load_img(path, grayscale=False, target_size=None)
    #path:图像载入的路径
    #grayscale:是否只载入灰度,默认为false
    #target_size:是否需要重新框定大小,默认是原图大小,其中如果要修改,则类似:
    image.load_img(img_path, target_size=(224, 224))
    • img_to_array函数:
    img_to_array(img, dim_ordering='default')
    #img,load_img之后的内容
    #dim_ordering,图像的格式是否更改,一般是default,不做任何更改

    函数源码来源:
    https://github.com/fchollet/keras/blob/master/keras/preprocessing/image.py

    .


    延伸一:win下theano安装报错

    ImportError: cannot import name gof

    网上的解决方案为:

    pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

    但是windows里面没有git,于是我安装了git之后,执行上述内容,的确安装完成,但是就是Import不了… 无解了….

    也有人说重新安装theano

    http://blog.csdn.net/zhouyongsdzh/article/details/24449645
    .


    延伸二:python中常用数据增强的library

    下面这个Github的作者做了一个library, 实现了N种 data augmentation, 还嫌你的数据太少吗。。。试试吧!! 输入一只小老鼠,输出一窝小老鼠。
    github地址:https://github.com/aleju/imgaug
    这里写图片描述

    展开全文
  • 计算 RGB 三通道的 MSE ,然后再除以 3 。 3.将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR。 如果是计算视频的PSNR,需要计算整个视频的MSE进行计算,而不是计算每一帧的MSE后加和后作为整个...

    图像/视频增强一般包含去噪、去雾和超分辨率等等,如何来评价经过增强后的图像就需要衡量指标来评定,图像质量评价从方法上可分为主观评价方法和客观评价方法,本文主要介绍客观评价方法中三个重要的评价指标均方误差(MSE,Mean Squared Error)、峰值信噪比(PSNR,Peak Signal to Noise Rate)和结构相似性(SSIM,Structural Similarity)。

    在深度学习中选择不同的loss function对模型的训练也有不同的影响,在图像增强领域中常用L1、L2距离。

    1.均方误差(MSE,Mean Squared Error)
    假设大小为 M × N M \times N M×N的原始图像 I I I和经过处理的图像 K K K,均方误差为
    M S E = 1 M N ∑ i = 0 N − 1 ∑ j = 0 M − 1 [ I ( i , j ) − K ( i , j ) ] 2 MSE=\frac{1}{MN}\sum_{i=0}^{N-1}\sum_{j=0}^{M-1}[I(i,j)-K(i,j)]^2 MSE=MN1i=0N1j=0M1[I(i,j)K(i,j)]2
    均方误差衡量的是原始图像和经过处理图像像素差值的均方值,通过均方值的大小来确定两个图像之间的差异。MSE越大,两者之间的差异越大;MSE越小,两者之间的差异越小。

    2.峰值信噪比(PSNR,Peak Signal to Noise Rate)
    数学公式定义如下:
    P S N R = 10 l o g 10 ( M A X I 2 M S E ) PSNR=10log_{10}(\frac{MAX_I^2}{MSE}) PSNR=10log10(MSEMAXI2)
    其中 M A X I 2 MAX_I^2 MAXI2为原始图像的最大像素值。如果图像像素值是由8位二进制表示,则该值为255;如果图像像素值是由B为二进制表示,则该值为 M A X I 2 = 2 B − 1 MAX_I^2=2^B-1 MAXI2=2B1。一般针对uint8图像,最大像素值为255,浮点型数据的最大像素值为1。PSNR单位是dB。
    上述公式是针对灰度图像的计算方法,如果是彩色图像,通常由三种方法来计算:
    1.分别计算 RGB 三个通道的 PSNR,然后取平均值。
    2.计算 RGB 三通道的 MSE ,然后再除以 3 。
    3.将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR。
    如果是计算视频的PSNR,需要计算整个视频的MSE进行计算,而不是计算每一帧的MSE后加和后作为整个视频的MSE,具体公式如下:
    M S E = 1 M N F ∑ f = 0 F − 1 ∑ i = 0 N − 1 ∑ j = 0 M − 1 [ I ( i , j , f ) − K ( i , j , f ) ] 2 MSE=\frac{1}{MNF}\sum_{f=0}^{F-1}\sum_{i=0}^{N-1}\sum_{j=0}^{M-1}[I(i,j,f)-K(i,j,f)]^2 MSE=MNF1f=0F1i=0N1j=0M1[I(i,j,f)K(i,j,f)]2
    其中,F为视频的帧数。

    3.结构相似性(SSIM,Structural Similarity)

    结构相似性基于两个图像的三个指标来比较:亮度 (luminance)、对比度 (contrast) 和结构 (structure)
    l ( x , y ) = 2 u x u y + c 1 u x 2 + u y 2 + c 1 c ( x , y ) = 2 σ x σ y + c 2 σ x 2 + σ y 2 + c 2 s ( x , y ) = σ x y + c 3 σ x σ y + c 3 l(x,y)=\frac{2u_{x}u_{y}+c_{1}}{u_{x}^2+u_{y}^2+c_{1}} \\c(x,y)=\frac{2\sigma_{x}\sigma_{y}+c_{2}}{\sigma_{x}^2+\sigma_{y}^2+c_{2}} \\s(x,y)=\frac{\sigma_{xy}+c_{3}}{\sigma_{x}\sigma_{y}+c_{3}} l(x,y)=ux2+uy2+c12uxuy+c1c(x,y)=σx2+σy2+c22σxσy+c2s(x,y)=σxσy+c3σxy+c3
    其中, u x u_{x} ux x x x的均值; u y u_{y} uy y y y的均值; σ x 2 \sigma_{x}^2 σx2 x x x的方差; σ y 2 \sigma_{y}^2 σy2 x x x的方差; σ x y \sigma_{xy} σxy x x x y y y的协方差; c 1 、 c 2 和 c 3 c_{1}、c_{2}和c_{3} c1c2c3为常数,防止除零,一般 c 1 = ( k 1 L ) 2 , c 2 = ( k 2 L ) 2 c_{1}=(k_{1}L)^2,c_{2}=(k_{2}L)^2 c1=(k1L)2,c2=(k2L)2, L = 2 B − 1 L=2^B-1 L=2B1, B B B为图像位数。
    那么, S S I M ( x , y ) = [ l ( x , y ) α ⋅ c ( x , y ) β ⋅ s ( x , y ) γ ] SSIM(x,y)=[l(x,y)^\alpha\cdot c(x,y)^\beta\cdot s(x,y)^\gamma] SSIM(x,y)=[l(x,y)αc(x,y)βs(x,y)γ]
    α , β , γ \alpha,\beta,\gamma α,β,γ为1,得到
    S S I M ( x , y ) = ( 2 u x u y + c 1 ) ( 2 σ x y + c 2 ) ( u x 2 + u y 2 + c 1 ) ( σ x 2 + σ y 2 + c 2 ) SSIM(x,y)=\frac{(2u_{x}u_{y}+c_{1})(2\sigma_{xy}+c_{2})}{(u_{x}^2+u_{y}^2+c_{1})(\sigma_{x}^2+\sigma_{y}^2+c_{2})} SSIM(x,y)=(ux2+uy2+c1)(σx2+σy2+c2)(2uxuy+c1)(2σxy+c2)
    每次计算的时候都从图片上取一个 N × N N \times N N×N 的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的 SSIM。

    4.图像增强中的loss选择
    一般情况下都是使用L2作为损失函数,也就是均方误差。L2和L1的区别在于L2比L1多了平方,以L2为loss的网络会对异常值特别敏感,因为平方放大了异常值,会赋予异常点更大的损失值和梯度,反向传播过程中调整网络参数向减小异常点误差的方向更新,因此容易造成训练的不稳定和发散。以L1为loss的网络则对异常点有较好的适应,具有更好的鲁棒性。

    《Loss Functions for Image Restoration With Neural Networks》文章中实验了L1,L2、SSIM和MS-SSIM对图像去马赛克、去噪、超分以及JPEG图像去块化做了研究,实验结果以MS-SSIM+L1的组合作为损失函数最佳。

    具体的loss选择还是需要经过实验验证,在不同情况下,loss的选择对模型有一定影响。

    展开全文
  • Oracle函数

    万次阅读 2015-11-22 16:55:30
    Oracle函数 函数的分类: 单行函数:对每行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每行作为一个输入参数,经过函数计算得到每行的计算结果。比如length 多行函数:对多行输入值进行计算,...

     

    Oracle函数

     

     

    函数的分类:

     

    单行函数:对每行输入值进行计算,得到相应的计算结果,返回给用户,也就是说,每行作为一个输入参数,经过函数计算得到每行的计算结果。比如length

     

    多行函数:对多行输入值进行计算,得到多行对应的单个结果。比如max,min

     

    dual为oracle本身自带的虚表,主要用于测试使用。

     

    sql函数的使用--单行函数分类

    单行函数分为:

    字符函数、数字函数、日期函数、转换函数、系统函数。

     

     

    sql函数的使用--字符函数

    介绍:

    用于处理字符相关的函数,字符函数是oracle中最常用的函数。

     

    1、ascii

    返回与指定的字符对应的十进制数;

    SQL>select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

             A          A       ZERO      SPACE

    ---------- ---------- ---------- ----------

            65         97         48         32

     

    2、chr

    给出整数,返回对应的字符;

    SQL>select chr(54740) zhao,chr(65) chr65 from dual;

    ZHAO CHR65

    ---- -----

    赵   A

     

    3、concat

    连接两个字符串;

    SQL>select concat('010-','88888888')||'转23' 电话 from dual;

    电话

    ----------------

    010-88888888转23

    特别说明:concat(字串1或字段1,字串2或字段2)也可以书写成 字串1或字段1 || 字串2或字段2

     

    4、initcap

    返回字符串并将字符串的第一个字母变成大写;

    SQL>select initcap('smith') upp from dual;

    UPP

    -----

    Smith

     

    5、instr(C1,C2,I,J)

    在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

    C1被搜索的字符串;

    C2希望搜索的字符串;

    I搜索的开始位置,默认为1;

    J出现的位置,默认为1;

    SQL>select instr('oracle traning','ra',1,2) instring from dual;

      INSTRING

    ----------

             9

     

    6、length

    返回字符串的长度;

    SQL>select ename,length(ename),job,length(job),sal,length(to_char(sal)) from emp where ename='SMITH';

    ENAME      LENGTH(ENAME) JOB       LENGTH(JOB)       SAL LENGTH(TO_CHAR(SAL))

    ---------- ------------- --------- ----------- --------- --------------------

    SMITH                  5 CLERK               5    800.00                    3

    特别说明:在oracle中单个汉字、字母、还是特殊符号都认为是长度为1

     

    7、lower

    返回字符串,并将所有的字符小写;

    SQL>select lower('AaBbCcDd') "lower-AaBbCcDd" from dual;

    lower-AaBbCcDd

    --------------

    aabbccdd

     

    8、upper

    返回字符串,并将所有的字符大写;

    SQL>select upper('AaBbCcDd') "upper-AaBbCcDd" from dual;

    upper-AaBbCcDd

    --------------

    AABBCCDD

     

    9、rpad和lpad(粘贴字符)

    rpad在列的右边粘贴字符 rpad('显示内容'或字段,显示长度,'填充占位符')

    lpad在列的左边粘贴字符 lpad('显示内容'或字段,显示长度,'填充占位符')

    SQL>select lpad(rpad('gao',10,'*'),17,'*') from dual;

    LPAD(RPAD('GAO',10,'*'),17,'*'

    ------------------------------

    *******gao*******

    特别说明:函数是可以相互嵌套,复合使用的。

     

    10、ltrim和rtrim

    ltrim删除左边出现的字符串 ltrim('原内容'或字段,'要删除的字符串')

    rtrim删除右边出现的字符串 rtrim('原内容'或字段,'要删除的字符串')

    SQL>select ltrim(rtrim('    gao qian jing    ',' '),' ') from dual;

    LTRIM(RTRIM('GAOQIANJING',''),

    ------------------------------

    gao qian jing

     

    11、substr(string,start,count)

    取子字符串,从start开始,取count个

    SQL>select substr('13088888888',3,8) from dual;

    SUBSTR('13088888888',3,8)

    -------------------------

    08888888

     

    12、replace('string','s1','s2')

    string 希望被替换的字符或变量

    s1被替换的字符串

    s2要替换的字符串

    SQL>select replace('he love you','he','i') from dual;

    REPLACE('HELOVEYOU','HE','I')

    -----------------------------

    i love you

     

    13、soundex

    返回一个与给定的字符串读音相同的字符串;

    SQL>create table table1(xm varchar(8));

    SQL>insert into table1 values('weather');

    SQL>insert into table1 values('wether');

    SQL>insert into table1 values('gao');

    SQL>select xm from table1 where soundex(xm)=soundex('weather');

    XM

    --------

    weather

    wether

    特别说明:soundex找出读音相同的字符串,但无法找出汉字的读音,只能找出英文和拼音的读音。

     

    14、trim('s' from 'string')

    删除左边右边的指定字符串;

    SQL>select trim(0 from 0009872348900) "trim example" from dual;

    trim example

    ------------

    98723489

     

     

     

    实例:

    --字符函数
    --显示所有员工的名字按小写的方式显示
    select lower(ename) from emp;
    
    --显示所有员工的名字按大写的方式显示
    select upper(ename) from emp;
    
    --显示正好有五个字符的员工的姓名
    select * from emp where length(ename) = 5;
    
    --显示所有员工姓名的前三个字符
    select substr(ename,1,3) from emp;
    
    --以首字母为大写显示所有员工姓名
    select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp;
    
    --以首字母为小写显示所有员工姓名
    select lower(substr(ename,1,1)) || upper(substr(ename,2,length(ename)-1)) from emp;
    
    --显示所有员工的姓名,并且用'aaaaaa'替换'A'
    select replace(ename,'A','aaaaaa') from emp;

     

    sql函数的使用--数学函数

     

     

    15、abs

    返回指定值的绝对值;

    SQL>select abs(100),abs(-100) from dual;

      ABS(100)  ABS(-100)

    ---------- ----------

           100        100

     

    16、acos

    给出反余弦的值;

    SQL>select acos(-1) from dual;

      ACOS(-1)

    ----------

    3.14159265

     

    17、asin

    给出反正弦的值;

    SQL>select asin(0.5) from dual;

     ASIN(0.5)

    ----------

    0.52359877

     

    18、atan

    返回一个数字的反正切值;

    SQL>select atan(1) from dual;

       ATAN(1)

    ----------

    0.78539816

     

    19、ceil

    返回大于或等于给出数字的最小整数;

    SQL>select ceil(3.14159265) from dual;

    CEIL(3.14159265)

    ----------------

                   4

    特别说明:ceil返回的最小整数并不是四舍五入返回整数,而是返回给定值最近且大于给定值的整数也就是向上取整,当然负数也是向上取整,例如: ceil(-45.1) = -45

     

    20、cos

    返回一个给定数字的余弦;

    SQL>select cos(-3.14159265) from dual;

    COS(-3.14159265)

    ----------------

                  -1

     

    21、cosh

    返回双曲余弦的值

    SQL>select cosh(20) from dual;

      COSH(20)

    ----------

    242582597.

     

    22、exp

    返回一个数字e的n次方根;

    SQL>select exp(2),exp(1) from dual;

        EXP(2)     EXP(1)

    ---------- ----------

    7.38905609 2.71828182

     

    23、floor

    返回小于或等于给出数字的最整数;

    SQL>select floor(2345.67) from dual;

    FLOOR(2345.67)

    --------------

              2345

    特别说明:floor正好与ceil相反,向下取整数,不论小数点后面是什么数,一律截掉,只取前面整数。

    负数却是向下取整,例如: floor(-46.8) = - 47 

     

    24、ln

    返回一个数字的对数值;

    SQL>select ln(1),ln(2),ln(2.7182818) from dual;

         LN(1)      LN(2) LN(2.7182818)

    ---------- ---------- -------------

             0 0.69314718 0.99999998953

    25、log(n1,n2)

    返回一个以n1为底n2的对数;

    SQL>select log(2,1),log(2,4) from dual;

      LOG(2,1)   LOG(2,4)

    ---------- ----------

             0          2

     

    26、mod(n1,n2)

    返回一个n1除以n2的余数;(取模函数)

    SQL>select mod(10,3),mod(3,3),mod(2,3) from dual;

     MOD(10,3)   MOD(3,3)   MOD(2,3)

    ---------- ---------- ----------

             1          0          2

     

    27、power

    返回n1的n2次方根;

    SQL>select power(2,10),power(3,3) from dual;

    POWER(2,10) POWER(3,3)

    ----------- ----------

           1024         27

     

    28、round和trunc

    按照指定的精度进行舍入;round函数为四舍五入

    SQL>select round(55.5),round(-55.4) from dual;

    ROUND(55.5) ROUND(-55.4)

    ----------- ------------

             56          -55

     

    29、sign

    取数字n的符号,大于0返回1,小于0返回-1,等于0返回0;

    SQL>select sign(123),sign(-100),sign(0) from dual;

     SIGN(123) SIGN(-100)    SIGN(0)

    ---------- ---------- ----------

             1         -1          0

     

    30、sin

    返回一个数字的正弦值;

    SQL>select sin(1.57079) from dual;

    SIN(1.57079)

    ------------

    0.9999999999

     

    31、sinh

    返回双曲正弦的值;

    SQL>select sin(20),sinh(20) from dual;

       SIN(20)   SINH(20)

    ---------- ----------

    0.91294525 242582597.

     

    32、sqrt

    返回数字n的根;

    SQL>select sqrt(64),sqrt(10) from dual;

      SQRT(64)   SQRT(10)

    ---------- ----------

             8 3.16227766

     

    33、tan

    返回数字的正切值;

    SQL>select tan(20),tan(10) from dual;

       TAN(20)    TAN(10)

    ---------- ----------

    2.23716094 0.64836082

     

    34、tanh

    返回数字的n的双曲正切值;

    SQL>select tanh(20),tan(20) from dual;

      TANH(20)    TAN(20)

    ---------- ----------

             1 2.23716094

     

    35、trunc

    按照指定的精度进行舍入;trunc函数为直接截取

    SQL>select trunc(55.5),trunc(-55.5) from dual;

    TRUNC(55.5) TRUNC(-55.5)

    ----------- ------------

             55          -55

     

    实例:

     

     

    --数学函数
    --用不同函数比较员工年薪的区别
    --round四舍五入
    select ename,(round(sal)+round(nvl(comm,0)))* 13 from emp;
    select ename,(round(sal,2)+round(nvl(comm,0),2))* 13 from emp;
    --舍去之后部分
    select ename,(trunc(sal,2)+trunc(nvl(comm,0),2))* 13 from emp;
    --向下取整
    select ename,(floor(sal)+floor(nvl(comm,0)))* 13 from emp;
    --向上取整
    select ename,(ceil(sal)+ceil(nvl(comm,0)))* 13 from emp;
    
    --计算10%3
    select mod(10,3) from dual;
    
    --显示在一个月为30天的情况下所有员工的日薪金,忽略余数
    select ename,trunc(sal/30,0) from emp;
    select ename,floor(sal/30) from emp;

     

     

     

    sql函数的使用--日期函数

    36、add_months

    add_months(日期值,增加(减少)值)

    增加或减去月份;

    SQL>select to_char(add_months(to_date('1999-12','yyyy-mm'),2),'yyyy-mm') from dual;

    TO_CHAR(ADD_MONTHS(TO_DATE('19

    ------------------------------

    2000-02

     

    SQL>select hiredate,add_months(hiredate,2) from emp where ename='SMITH';

    HIREDATE    ADD_MONTHS(HIREDATE,2)

    ----------- ----------------------

    1980/12/17  1981/2/17

     

    请查找最近350个月入职的员工

    SQL>select ename,hiredate from emp where add_months(hiredate,350)>=sysdate;

    ENAME      HIREDATE

    ---------- -----------

    SCOTT      1987/4/19

    ADAMS      1987/5/23

     

    37、last_day

    返回当前月日期的最后一天;

     

    SQL>select to_char(last_day(sysdate),'yyyy-mm-dd') from dual;

    TO_CHAR(LAST_DAY(SYSDATE),'YYY

    ------------------------------

    2014-04-30

     

    38、months_between(date2,date1)

    给出date2-date1的月份,共有多少个月;

    SQL>select months_between('19-12月-1999','19-3月-1999') mon_between from dual;

    MON_BETWEEN

    -----------

              9

     

    SQL>select months_between(to_date('2000-05-20','yyyy-mm-dd'),to_date('2005-05-20','yyyy-mm-dd')) mon_betw from dual;

      MON_BETW

    ----------

           -60

     

    39、new_time(date,'this','that')

    给出在this时区=other时区的日期和时间;

    SQL>select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') bj_date,to_char(new_time(sysdate,'PDT','GMT'),'yyyy-mm-dd hh24:mi:ss') los_date from dual;

    BJ_DATE             LOS_DATE

    ------------------- -------------------

    2014-04-24 15:27:38 2014-04-24 22:27:38

     

    40、next_day(date,'day')

    给出日期date和星期X之后计算下一个星期的星期X日期;

    SQL>select next_day('18-5月-2001','星期五') next_day from dual;

    NEXT_DAY

    -----------

    2001/5/25

     

    41、sysdate

    用来得到系统的当前日期;

    SQL>select to_char(sysdate,'day') from dual;

    TO_CHAR(SYSDATE,'DAY')

    ----------------------

    星期四

     

    实例:

    --日期函数
    --显示系统时间
    select sysdate from dual;
    
    --查找入职8个月以上的员工
    select * from emp where sysdate > add_months(hiredate,8);
    
    --显示满了10年服务期限的员工的信息
    select * from emp where sysdate >= add_months(hiredate,12*10);
    
    --对于每个员工,显示其加入公司的天数
    select ename,trunc(sysdate-hiredate) 入职天数 from emp;
    
    --找出各月倒数第3天受雇的所有员工
    select ename,hiredate from emp where last_day(hiredate)-2 = hiredate;

     

    sql函数的使用--转换函数

     

    42、chartorowid (基本上不会用到)

    将字符数据类型转换为rowid类型

    SQL>select rowid,rowidtochar(rowid),ename from emp;

    ROWID                             ROWIDTOCHAR(ROWID) ENAME

    --------------------------------- ------------------ ----------

    AAAR3sAAEAAAACXAAA                AAAR3sAAEAAAACXAAA SMITH

    AAAR3sAAEAAAACXAAB                AAAR3sAAEAAAACXAAB ALLEN

    AAAR3sAAEAAAACXAAC                AAAR3sAAEAAAACXAAC WARD

     

    43、convert(c,dset,sset) (基本上不会用到)

    将源字符串sset从一个语言字符集转换到另一个目的dset字符集;

    SQL>select convert('strutx','we8hp','f7dec') "conversion" from dual;

    conversion

    ----------

    strutx

     

    44、hextoraw (基本上不会用到)

    将一个十六进制构成的字符转换为二进制

     

    45、rawtohex (基本上不会用到)

    将一个二进制构成的字符串转换为十六进制

     

    46、rowidtochar (基本上不会用到)

    将rowid数据类型转换为字符类型

     

    47、to_char(date,'format')

    日期类型转换成字符串格式(主要用于将日期以习惯的格式输出显示)

    SQL>select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

    TO_CHAR(SYSDATE,'YYYY/MM/DDHH2

    ------------------------------

    2014/04/24 16:19:34

     

    特别说明:

    日期格式:

    yy:两位数字的年份 2004--04

    yyyy:四位数字的年份 2004年

    mm:两位数字的月份 8月--08

    dd:两位数字的天数 30号--30

    hh24:二十四小时制8点--20

    hh12:十二小时制8点--08

    mi,ss--显示分钟\秒

    day显示星期几

    month显示几月

    year显示年

     

    数字格式:

    9:显示数字,并忽略前面0

    0:显示数字,如位数不足,则用0补齐

    .:在指定位置显示小数点

    ,:在指定位置显示逗号

    $:在数字前加美元符号

    L:在数字前加本地货币符号

    C:在数字前加国际货币符号

    G:在指定位置显示组分隔符

    D:在指定位置显示小数点符号(.)

    说明:,逗号.和小数点可以合在一起使用,G分隔符和D小数点符可以合在一起使用,但,.不能和GD综合使用,否则报错。

     

    48、to_date(string,'format')

    将字符串转换成日期(主要用于将日期按习惯的格式输入到oracle数据库中)

    说明:to_date的用户到to_char的日期型用法基本是一样的,只是功能不一样。to_char是用于显示输出数据,to_date是用于输入数据。

     

    49、to_multi_byte

    将字符串中的单字节字符转换为多字节字符;(底层的转换)

    SQL>select to_multi_byte('高') from dual;

    TO_MULTI_BYTE('高')

    -------------------

     

    50、to_number

    将给出的数字类型的字符转换为数字;

    SQL>select to_number('1999') year from dual;

          YEAR

    ----------

          1999

     

    实例:

    --转换函数
    --显示雇佣员工的具体时间(yyyy-mm-dd hh24:mi:ss)
    select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
    
    --显示员工薪水
    select ename,to_char(sal,'L99G999D99') from emp;
    select ename,to_char(sal,'L99,999.99') from emp;
    
    --显示1980年入职的所有员工
    select ename,to_char(hiredate,'yyyy') from emp where to_char(hiredate,'yyyy')=1980;
    
    --显示12月入职的所有员工
    select ename,to_char(hiredate,'yyyy-mm-dd') from emp where to_char(hiredate,'mm') = 12;

     

    sql函数的使用--系统函数

     

    51、bfilename(dir,file)

    指定一个外部二进制文件;

    SQL>insert into 表名 values(bfilename('文件路径','文件名'));

     

    52、convert('x','desc','source')

    将x字段或变量的源source转换为desc

     

    52-1、decode函数类似于java的switch case分支语句

    SQL>select ename||decode(deptno,10,'在10号部门',20,'在20号部门',30,'在30号部门') from emp where ename='SCOTT' order by deptno;

    ENAME||DECODE(DEPTNO,10,'在10?

    ------------------------------

    SCOTT在20号部门

     

    53、dump(s,fmt,start,length)

    dump函数以fmt指定的内部数字格式返回一个varchar2类型的值;(主要用于查看类型格式长度)

    SQL>select dump(ename) from emp where ename='SCOTT';

    DUMP(ENAME)

    ---------------------------

    Typ=1 Len=5: 83,67,79,84,84

     

    54、empty_blob()和empty_clob()

    这两个函数都是用来对大数据类型字段进行初始化操作的函数

     

    55、greatest

    返回一组表达式中的最大值,即比较字符的编码大小;

    SQL>select greatest('AA','AB','AC') from dual;

    GREATEST('AA','AB','AC')

    ------------------------

    AC

     

    56、least

    返回一组表达式中最小值;

    SQL>select least('AA','AB','AC') from dual;

    LEAST('AA','AB','AC')

    ---------------------

    AA

     

    57、uid

    返回标识当前用户的唯一整数;(可以看到使用操作oracle用户的唯一uid编号)

    SQL>select uid from dual;

           UID

    ----------

            84

     

    58、user

    返回当前用户的名字

    SQL>select user from dual;等同于SQL>show user;

    USER

    ------------------------------

    SCOTT

     

    59、userenv

    返回当前用户环境的信息,opt可以是:

    ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZEISDBA

    查看当前用户是否是DBA如果是则返回true

    SQL>select userenv('isdba') from dual;

    USERENV('ISDBA')

    ----------------

    FALSE

     

    SQL> select userenv('isdba') from dual;

    USEREN

    ------

    TRUE

     

    SESSION

    返回会话标志

    SQL> select userenv('sessionid') from dual;

    USERENV('SESSIONID')

    --------------------

                     152

     

    ENTRYID

    返回会话入口标志

    SQL> select userenv('entryid') from dual;

    USERENV('ENTRYID')

    ------------------

                     0

     

    INSTANCE

    返回当前INSTANCE的标志

    SQL> select userenv('instance') from dual;

    USERENV('INSTANCE')

    -------------------

                      1

     

    LANGUAGE

    返回当前环境变量

    SQL> select userenv('language') from dual;

    USERENV('LANGUAGE')

    ----------------------------------------------------

    SIMPLIFIED CHINESE_CHINA.ZHS16GBK

     

    LANG

    返回当前环境的语言的缩写

    SQL> select userenv('lang') from dual;

    USERENV('LANG')

    ----------------------------------------------------

    ZHS

     

    TERMINAL

    返回用户的终端或机器的标志

    SQL> select userenv('terminal') from dual;

    USERENV('TERMINA

    ----------------

    GAO

     

    VSIZE(X)

    返回X的大小(字节)数

    SQL> select vsize(user),user from dual;

    VSIZE(USER) USER

    ----------- ------------------------------

              6 SYSTEM

     

     

    sys_context

    1、terminal:当前会话客户所对应的终端标识符;

    2、lanuage:语言;

    3、db_name:当前数据库名称;

    4、nls_date_format:当前会话客户所对应的日期格式;

    5、session_user:当前会话客户所对应的数据库用户名;

    6、current_schema:当前会话客户所对应的默认方案名;

    7、host:返回数据库所在主机的名称;

     

    实例:

    --系统函数
    --当前操作的数据库
    select sys_context('USERENV','db_name') from dual;
    
    --当前数据库语言
    select sys_context('USERENV','language') from dual;
    
    --当前会话对应的用户名
    select sys_context('USERENV','session_user') from dual;
    
    --当前的方案
    select sys_context('USERENV','current_schema') from dual;
    
    --当前数据库所在主机的名称
    select sys_context('USERENV','host') from dual;
    
    --当前数据库的日期格式
    select sys_context('USERENV','nls_date_format') from dual;

     

    sql函数的使用--多行函数

     

    60、avg(distinct|all)

    all表示对所有的值求平均值,distinct只对不同的值求平均值

    SQL>select avg(distinct sal) from emp;

    AVG(DISTINCTSAL)

    ----------------

    2064.58333333333

     

    SQL> select avg(all sal) from emp;

    AVG(ALLSAL)

    -----------

    2073.214285

    61、max(distinct|all)

    求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次

    SQL>select max(distinct sal) from emp;

    MAX(DISTINCTSAL)

    ----------------

                5000

     

    62、min(distinct|all)

    求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次

    SQL>select min(all sal) from emp;

    MIN(ALLSAL)

    -----------

            800

     

    63、stddev(distinct|all)

    求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差

    SQL>select stddev(sal) from scott.emp;

    STDDEV(SAL)

    -----------

      1182.5032

     

    SQL>select stddev(distinct sal) from emp;

    STDDEV(DISTINCTSAL)

    -------------------

               1229.951

     

    64、variance(distinct|all)

    求协方差

    SQL>select variance(sal) from emp;

    VARIANCE(SAL)

    -------------

        1398313.9

     

    65、group by

    主要用来对一组数进行统计

    SQL> select deptno,count(*),sum(sal) from emp group by deptno;

    DEPTNO   COUNT(*)   SUM(SAL)

    ------ ---------- ----------

        30          6       9400

        20          5      10875

        10          3       8750

     

    66、having

    对分组统计再加限制条件

    SQL> select deptno,count(*),sum(sal) from emp group by deptno having count(*)>=5;

    DEPTNO   COUNT(*)   SUM(SAL)

    ------ ---------- ----------

    30          6       9400

    20          5      10875

    SQL> select deptno,count(*),sum(sal) from emp having count(*)>=5 group by deptno;

    DEPTNO   COUNT(*)   SUM(SAL)

    ------ ---------- ----------

        30          6       9400

        20          5      10875

     

    67、order by

    用于对查询到的结果进行排序输出(升序排序asc,降序排序desc)

    SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;

    DEPTNO ENAME            SAL

    ------ ---------- ---------

        10 KING         5000.00

        10 CLARK        2450.00

        10 MILLER       1300.00

        20 SCOTT        3000.00

        20 FORD         3000.00

     

     

    ----------参考《韩顺平玩转Oracle》

     

    展开全文
  • ORACLE 函数

    千次阅读 2017-03-04 07:43:44
    张哥同步视频:https://edu.csdn.net/course/play/7940字符函数字符函数参数全部是字符类作为参数,字符函数返回值有的是varchar2类型的值,有的是number类型的值,返回number类型时,没有定义任何精度和刻度范围 表...

    张哥同步视频:https://edu.csdn.net/course/play/7940


    字符函数

    字符函数参数全部是字符类作为参数,字符函数返回值有的是varchar2类型的值,有的是number类型的值,返回number类型时,没有定义任何精度和刻度范围

    3-1-1字符函数

    函数名

    函数功能

    ASCII

    返回与指定的字符对应的十进制数

     select ascii(ename) ,job from emp;

    CHR

    参数为整数,表示某个字符的Unicode,返回对应的字符

     

     

    CONCAT

    连接两个字符串

    select concat(ename,'---') name from emp;

    select concat(concat(ename,'--'),job) name from emp;

    连接字符串也可以使用||

     

     

    LOWER

    返回字符串,并将所有的字符小写

     select lower(ename) ename  ,job from emp;

    UPPER

    返回字符串,并将所有的字符大写

    select upper(lower(ename)) ename  ,job from emp

    INITCAP

    返回字符串并将字符串的第一个字母变为大写

     select INITCAP('sdaf  dsfasd') from emp;

     

     

    INSTR

    在一个字符串中搜索指定的字符,返回发现指定的字符的位置 

    select instr('aab','aa') from dual;

    select * from emp where  instr(ename,'A')!=0;

    select instr(‘oracle training’,’ra’,1,2) instring from dual;

     

    LENGTH

    返回字符串的长度

    select * from emp where  length(ename)>5

     

     

    RPAD

    在列的右边粘贴字符

    select rpad(ename,10,'*') ename from emp;

    LPAD

    在列的左边粘贴字符

     

     

     

     

    SUBSTR

    取子字符串

    select substr('abcdefg' ,2,5) from dual;

    取身份证的生日;

    REPLACE

    将一个字符串中的子字符串替换成其他的字符串

    select replace('abc','ab') from dual;

    select replace('abc','ab') from dual;

     

    TRIM

    删除字符串两边的字符串,如删除字符串两边的空格,删除字符串两边的#字符

    select trim('  sd sdf   ') from dual;

    应用 登陆

    select * from emp where ename=trim('     SCOTT  ');

    select trim(' ' from '  sdfdf ds   ') from dual;

    select trim('a' from 'aasdfaaadf dsaaa') from dual

    删除123Tech111两端的1字符

    SQL>select trim (both  ‘1’ from ‘123tech111’) from dual;

     

    SQL> select trim(leading ‘0’ from ‘000123’)  from dual;

     

    删除Tech1尾部的1字符

    SQL>select trim(trailing ‘1’ from ‘Tech1’) from dual;

     

     

    LTRIM

    删除左边出现的字符串

     

    RTRIM

    删除右边出现的字符串

     

     

     

    在电子商务系统中,对于用户的联系方式,特别是固定电话,在数据库中区号和电话号码是分别用两列存贮的,因为这样方便查询。但是展现信息是需要区号和电话作为一个整体。此时必须使用 字符串拼接函数CONCAT

    示例3.3

    SQL> SELECT CONCAT(‘010-’,’88888888’) || ‘23’ 电话号码 from dual;

    连接01088888888、转233个字符串 


    字符串连接可以有两种方法,一是使用CONCAT函数,二是使用||字符串连接符。

     

    美国人的名字中每个单词的首字母必须大写显示,这是英语的习惯。下面要显示迈克尔杰克逊人名,需要将每个单词首字符大写

    示例3.4

    SQL> select initcap(‘michael jackson’) as name  from dual;

    有些时候,我们可能需要在一长串字符中找某个字符串,并且有可能需要找到第几次出现的位置,这时可以使用instr函数。

    oracle traning字符串中找ra字符,从第一个字符开始,查找第二次出现的位置
    示例3.5

    SQL> select instr(‘oracle training’,’ra’,1,2) instring from dual;


    INSTR一共有4个参数,第一个是被查找的字符串,第二个是要查找的字符串,我们要查找ra字符串,第三个参数是一个数字,表示从哪个位置开始找,此参数可选,如果省略默认为1。第四个参数表示要查找第几次出现的ra,此参数可选,如果省略默认为1

     

    在英语信息中,有时我们可能需要可能首字符大写、全大写和全小写的形式向客户展示我们的信息,这时我们可以使用initcap,upper,lower函数。

    示例3.6

    SQL> select initcap(ename), upper(ename), lower(ename) from emp;


    上面的例子分别以首字符大写、全大写和全小写的形式显示emp表中的姓名(ename)字段

    电子商务中,我们有时需要在源字符串的基础上在其前后增加若干个特殊字符,已达到某一个固定的长度。这时可以使用lpad,rpad函数

    示例3.7

    SQL> select lpad(rpad(‘gao’,10,’#’),17,’*’) from dual;


    上面的示例将gao字符串右边增加若干个#使总长度达到10,然后再左边增加若干个*,使总长度达到17

    RPAD 是在列的右边粘贴字符包括有3个参数,第一个是原字符串gao,第二个参数是增加后达到10个字符,第三个参数表示要加#字符。

     

    示例3.8 

    SQL> select ltrim(rtrim(‘’****gao qian jing    ,’ ’),’*’) from dual;


    上面的示例删除了”****gao qian jing   “字符串左边的*,再删除右边的空格

     

    取字符串的子串在实际的业务中用的非常多,如取身份证的某几位得到某人的出生年月日,再如获得一个移动电话的后8位等等。

    示例3.9

    SQL> select substr(‘13088888888’,3,8) from dual;


    上面的示例从13088888888中取子字符串,3开始,8

     

    将字符串中的子串替换成新的值在业务中也有使用,比如我们将信息中的一些不雅的词语替换成****,这时我们可以使用replace函数

    示例3.10

    SQL> select replace(‘he love you’,’he’,’I’) from dual;


    上面的示例替换he love you字符串中的hei

     

    用户输入时用户名或密码时有可能输入空格,我们可以使用trim删除两端的空格

    示例3.11

    SQL> select trim(‘   tech   ‘) from dual;  

     

    trim('字符1' from '字符串2')  分别从字符2串的两边开始,删除指定的字符1

    SQL>select trim(‘ ‘ from ‘    tech       ‘)  from dual;

     

    删除000123头部的0字符

    SQL> select trim(leading ‘0’ from ‘000123’)  from dual;

     

    删除Tech1尾部的1字符

    SQL>select trim(trailing ‘1’ from ‘Tech1’) from dual;

     

    删除123Tech111两端的1字符

    SQL>select trim (both  ‘1’ from ‘123tech111’) from dual;


    注意:leading表示从字符串的头开始删除。Trailing表示从字符串的尾部开始删除。Borth表示从字符串的两边删除。

    当然也可以简化成

    select ltrim('****gao qian jing------','*') from dual


    数学函数

    数学函数以number类型作为参数返回number类型。

    3-1-2数学函数

    函数名

    函数功能

    ABS

    返回指定值的绝对值

    CEIL

    返回大于或等于给出数字的最小整数

    FLOOR

    对给定的数字取整数

    MOD(n1,n2)

    返回一个n1除以n2的余数

    POWER(n1,n2)

    返回n1n2次方

    SIGN

    取数字n的符号,大于0返回1,小于0返回-1,等于0返回0

    SQRT

    返回数字的根

    ROUND

    按照指定的精度四舍五入

    TRUNC

    按照指定的精度截取一个数

     

    天花板函数示例3.12

    SQL> select ceil(3.1415927) from dual;


    地板函数 示例3.13

     select floor(2345.67) from dual;

    示例3.14 

    SQL> select round(124.1666,-2) , round(124.1666,2) from dual;

    SQL> select trunc(124.1666,-2) , trunc(124.16666,2) from dual;

    注意:Round函数进行四舍五入,trunc函数进行截取。第二个参数为正时,表示从小数位计算。第二个参数为负时,表示从整数位计算。


    日期函数

    日期函数以DATE类型为参数。除了MONTHS_BETWEEN函数,它返回NUMBER类型,它返回DATE或日期时间类型。日期函数常用的格式模型如表3-1-1所示

    3-1-3   格式模型

    模板

    描述

    HH

    一天的小时数 (01-12

    HH12

    一天的小时数 (01-12

    HH24

    一天的小时数 (00-23

    MI

    分钟 (00-59

    SS

    秒 (00-59

    MS

    毫秒 (000-999)

    US

    微秒 (000000-999999)

    SSSS

    午夜后的秒 (0-86399

    AM 或 A.M. 或 PM 或 P.M.

    正午标识(大写)

    am 或 a.m. 或 pm 或 p.m.

    正午标识(小写)

    Y,YYY

    带逗号的年(4 和更多位)

    YYYY

    年(4和更多位)

    YYY

    年的后三位

    YY

    年的后两位

    Y

    年的最后一位

    BC 或 B.C. 或 AD 或 A.D.

    年标识(大写)

    bc 或 b.c. 或 ad 或 a.d.

    年标识(小写)

    MONTH

    全长大写月份名(9字符) 英文的月份 或者4

    Month

    全长混合大小写月份名(9字符)

    month

    全长小写月份名(9字符)

    MON

    大写缩写月份名(3字符)

    Mon

    缩写混合大小写月份名(3字符)

    mon

    小写缩写月份名(3字符)

    MM

    月份 (01-12

    DAY

    全长大写日期名(9字符)

    Day

    全长混合大小写日期名(9字符)

    day

    全长小写日期名(9字符)

    DY

    缩写大写日期名(3字符)

    Dy

    缩写混合大小写日期名(3字符)

    dy

    缩写小写日期名(3字符)

    DDD

    一年里的日子(001-366

    DD

    一个月里的日子(01-31

    D

    一周里的日子(1-7SUN=1

    W

    一个月里的周数(1-5),这里第一周从该月第一天开始

    WW

    一年里的周数(1-53),这里的第一周从该年的第一天开始

    Q

    季度

     

    3-1-4  日期函数

    函数名

    函数功能

    SYSDATE

    用来得到系统的当前日期

    插入当前时间

    使用默认格式字符串直接插入

    Todate  日期的格式

    Tochar

    ADD_MONTHS

    增加或减去月份

    trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒

     

     

    LAST_DAY

    返回日期的最后一天

    MONTHS_BETWEEN(date2,date1)

     

    给出date2date1相差的月份

    NEXT_DAY(date,'day')

    给出日期date和星期x之后计算下一个星期的日期

     

     

     

    示例3.15:

    SQL> select sysdate, to_char(sysdate,’dd-mm-yyyy day’) from dual;


    有时我们想按照自己的格式显示今天几号星期几,可以采用以上写法

     

    trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒


    想得到某个日期前后若干月是哪一天,可以使用ADD_MONTHS函数增加或减去月份

    示例3.16:

    SQL> select to_char(add_months(to_date('1999-12','yyyy-mm'),2),'yyyy-mm') from dual;


    在人员管理系统中,我们可能需要得到某两个日期相差多少个月,或某日期和今天相差月份,可以使用MONTHS_BETWEEN函数

    示例3.17

    SQL> select months_between('9-12-1999','19-3-1999') mon_between from dual;


    转换函数:

     

    转换函数是PL/SQL数据由一种数据类型转到另一种数据类型,例如to_date to_char tonumber

     

    PL/SQL将会通过对转换函数的隐式调用进行自动转换。但是,隐式调用转换函数时无法对使用的格式指定符进行控制,这时我们最好使用显式调用转换函数。

    SQL> select * from test;

     

           AGE

    ----------

             1

     

    SQL> select * from test where age='1';

     

    3-1-5 转换函数

    函数

    返回

    描述

    例子

    to_char(timestamp, text)

    text

    timestamp 转换成 string

    to_char(timestamp 'now','HH12:MI:SS')

    to_char(int, text)

    text

    int4/int8 转换成 string

    to_char(125, '999')

    to_char(double precision, text)

    text

    real/double precision 转换成 string

    to_char(125.8, '999D9')

    to_char(numeric, text)

    text

    numeric 转换成 string

    to_char(numeric '-125.8', '999D99S')

    to_date(text, text)

    date

    string 转换成 date

    to_date('05 Dec 2000', 'DD Mon YYYY')

    to_timestamp(text, text)

    date

    string 转换成 timestamp

    to_timestamp('05 Dec 2000', 'DD Mon YYYY')

    to_number(text, text)

    numeric

    string 转换成 numeric

    to_number('12,454.8-', '99G999D9S')

     

    将今天按照某种特殊的格式显示,可以使用to_char

    示例18

    SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;


    3-1-6  to_date函数格式模板

    模板

    描述

    HH

    一天的小时数 (01-12

    HH12

    一天的小时数 (01-12

    HH24

    一天的小时数 (00-23

    MI

    分钟 (00-59

    SS

    秒 (00-59

    MS

    毫秒 (000-999)

    US

    微秒 (000000-999999)

    SSSS

    午夜后的秒 (0-86399

    AM 或 A.M. 或 PM 或 P.M.

    正午标识(大写)

    am 或 a.m. 或 pm 或 p.m.

    正午标识(小写)

    Y,YYY

    带逗号的年(4 和更多位)

    YYYY

    年(4和更多位)

    YYY

    年的后三位

    YY

    年的后两位

    Y

    年的最后一位

    BC 或 B.C. 或 AD 或 A.D.

    年标识(大写)

    bc 或 b.c. 或 ad 或 a.d.

    年标识(小写)

    MONTH

    全长大写月份名(9字符)

    Month

    全长混合大小写月份名(9字符)

    month

    全长小写月份名(9字符)

    MON

    大写缩写月份名(3字符)

    Mon

    缩写混合大小写月份名(3字符)

    mon

    小写缩写月份名(3字符)

    MM

    月份 (01-12

    DAY

    全长大写日期名(9字符)

    Day

    全长混合大小写日期名(9字符)

    day

    全长小写日期名(9字符)

    DY

    缩写大写日期名(3字符)

    Dy

    缩写混合大小写日期名(3字符)

    dy

    缩写小写日期名(3字符)

    DDD

    一年里的日子(001-366

    DD

    一个月里的日子(01-31

    D

    一周里的日子(1-7SUN=1

    W

    一个月里的周数(1-5),这里第一周从该月第一天开始

    WW

    一年里的周数(1-53),这里的第一周从该年的第一天开始

    IW

    ISO 一年里的周数(第一个星期四在第一周里)

    CC

    世纪(2 位)

    J

    Julian 日期(自公元前471211日来的日期)

    Q

    季度

    RM

    罗马数字的月份(I-XIII=JAN)-大写

    rm

    罗马数字的月份(I-XIII=JAN)-小写

    TZ

    时区字串 - 大写

    tz

    时区字串 - 小写

     

    示例19

    SQL> select * from emp where hiredate> to_date(‘1990-12-2’,’yyyy-mm-dd’);

    SQL> select  to_date(‘371999’,’Month DD,yyyy) from dual;

    SQL>select  to_char(hiredate,’yyyy-MM-dd day’) from emp where rownum<10;


    将字符串转化为ORACLE中的一个日期

     

    保存到数据库中的数据可能是字符串,但是我们可以将其转换为数字再参与数学运算,这时使用to_number函数。如年份可能保存成字符,计算1999年后是哪一年

    示例20

    SQL> select to_number(‘1999’) + 10  year  from dual;


    其他函数

     

    函数名

    函数功能

    UID

    返回标识当前用户的唯一整数

     

    USER

    返回当前用户的名字

     

    NVL(expr1, expr2)

    NVL(expr1, expr2)表示如果expr1NULL,返回expr2;不为NULL,返回expr1。注意expr1expr2两者的类型要一致

    NVL2 (expr1, expr2, expr3)

    expr1不为NULL,返回expr2;为NULL,返回expr3expr2expr3类型不同的话,expr3会转换为expr2的类型

    NULLIF (expr1, expr2)

    expr1expr2相等返回NULL,不等返回expr1

     

     

    用户登录成功后,我们可能要记录当前登录用户的姓名和id,这时我们要使用UID,USER函数

    示例20:

    SQL> select uid from dual;

    SQL> select username,user_id from user_users where user_id = uid;


    显示当前用户编号,当然我们可以把这个编号存入自己定义的日志表中。

     

    在数据库中,经常出现某个字段值为空。这时,我们希望字段值为空时,显示某个值,否则显示自身。例如奖金字段(comm)的值为null,返回0,不为null显示comm.

    示例21

    SQL>select empno,ename,hiredate,sal,nvl(comm,0) ,sal+nvl(comm,0) from emp;


    除了nvl外,还可以使用nvl2函数。Nvl23个参数,如果参数1不为NULL, 返回第二个参数;为NULL,返回第三个参数

    示例22

    SQL> SELECT COMM,NVL2(COMM,COMM,0) FROM EMP;


    奖金字段COMM不为NULL,返回COMM;为NULL,返回0

    3.7 聚合函数

    聚合函数将多条记录聚合成一条记录。聚合函数有AVG,MAX,MIN,COUNT,SUM

     

    示例23:创建示例表和示例数据

    SQL> create table test(xm varchar(8),sal number(7,2));

    语句已处理。

    SQL>  insert into table3 values(‘gao’,1111.11);

    SQL>  insert into table3 values(‘gao’,1111.11);

    SQL>  insert into table3 values(‘zhu’,5555.55);

    SQL> commit;


    得到不同的sal的平均值,如果出现相同的sal值,如1111.11出现两次,只算一次。

    SQL> select avg(distinct sal) from test;


    得到所有的sal的平均值,如果出现相同的sal值,如1111.11出现两次,算两次。

    SQL> select avg(all sal) from gao.test;


    意:如果什么都不写,默认是all

     


    3.8  Oracle分析函数
    Oracle8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。  常用的分析函数如下所列:
    row_number() over (partition by ... order by ...)
    rank() over (partition by ... order by ...)
    dense_rank() over (partition by ... order by ...)


    count() over (partition by ... order by ...)
    max() over (partition by ... order by ...)
    min() over (partition by ... order by ...)
    sum() over (partition by ... order by ...)
    avg() over (partition by ... order by ...)

    OVER子句前面必须是排名函数或者是聚合函数。



    注意:下面例子中使用的表来自Oracle自带的HR用户下的表,如果没有安装该用户,可以在SYS用户下运行
    $ORACLE_HOME/demo/schema/human_resources/hr_main.sql来创建。 


    开窗函数的的理解:
    开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化

     

    举例如下:
    overorder by salary) 按照salary排序进行累计,order by是个默认的开窗函数
    overpartition by deptno)按照部门分区
    overorder by salary range between 50 preceding and 150 following
    每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
    overorder by salary rows between 50 preceding and 150 following
    每行对应的数据窗口是之前50行,之后150
    overorder by salary rows between unbounded preceding and unbounded following) 每行对应的数据窗口是从第一行到最后一行

    等效:
    overorder by salary range between unbounded preceding and unbounded following先查询 后开窗 然后再统计

     

    示例3.24

    下面的例子中列c_mavg计算员工表中每个员工的平均薪水报告,按照manager_id分组

    SQL>select manager_id, last_name, hire_date, salary,

    Avg(salary) over (partition by manager_id) as c_mavg from employees;


    示例3.25:下面的例子中列c_mavg计算员工表中每个员工的平均薪水报告,该平均值由当前员工和与之具有相同经理的前一个和后一个三者的平均数得来;

    SQL>SELECT manager_id, last_name, hire_date, salary,

    AVG(salary) OVER (PARTITION BY manager_id order by hire_date rows BETWEEN 1 PRECEDING and 3 FOLLOWING ) AS c_mavg

    FROM employees;


    示例3.27:下面例子中dept_max返回当前行所在部门的最大薪水值
    SQL>SELECT department_id, last_name, salary,
    MAX(salary) OVER (PARTITION BY department_id) AS dept_max

    FROM employees WHERE department_id in (10,20,30); 


    实例3.28:下面例子中dept_min返回当前行所在部门的最小薪水值
    SQL>SELECT department_id, last_name, salary,
    MIN(salary) OVER (PARTITION BY department_id) AS dept_min
    FROM employees WHERE department_id in (10,20,30); 


    示例3.29 . DENSE_RANK
    功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。密集的序列返回的时没有间隔的数

    下例中计算每个员工按部门分区再按薪水排序,依次出现的序列号(注意与RANK函数的区别)


    SQL>SELECT d.department_id , e.last_name, e.salary, DENSE_RANK()
    OVER (PARTITION BY e.department_id ORDER BY e.salary) as drank
    FROM employees e, departments d
    WHERE e.department_id = d.department_id
    AND d.department_id IN ('60', '90'); 


    示例3.30 RANK
    功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,
    然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。
    有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1
    则没有序数2,序列将给组中的下一行分配值3DENSE_RANK则没有任何跳跃。

    下例中计算每个员工按部门分区再按薪水排序,依次出现的序列号(注意与DENSE_RANK函数的区别)
    SQL>SELECT d.department_id , e.last_name, e.salary, RANK()
    OVER (PARTITION BY e.department_id ORDER BY e.salary) as drank
    FROM employees e, departments d
    WHERE e.department_id = d.department_id
    AND d.department_id IN ('60', '90'); 


    示例3.31  ROW_NUMBER
    功能描述:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号。

    下例返回每个员工再在每个部门中按员工号排序后的顺序号
    SQL>SELECT department_id, last_name, employee_id, ROW_NUMBER()
    OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
    FROM employees
    WHERE department_id < 50; 


    示例3.32. SUM
    功能描述:该函数计算组中表达式的累积和。

    下例计算同一经理下员工的薪水累积值
    SQL>SELECT manager_id, last_name, salary,
    SUM (salary) OVER (PARTITION BY manager_id ORDER BY salary
    RANGE UNBOUNDED PRECEDING) l_csum
    FROM employees
    WHERE manager_id in (101,103,108); 


    count分析函数对一组内发生的事情进行累积计数,如果指定*或一些非空常数,count将对所有行计数,如果指定一个表达式,count返回表达式非空赋值的计数,当有相同值出现时,这些相等的值都会被纳入被计算的值;可以使用DISTINCT来记录去掉一组中完全 相同的数据后出现的行数。 


    示例3.26:下面例子中计算每个员工在按薪水排序中当前行附近薪水在[n-50,n+150]之间的行数,n表示当前行的薪水
    例如,Philtanker的薪水2200,排在他之前的行中薪水大于等于2200-50的有1行,排在他之后的行中薪水小于等于2200150的行 没有,所以count计数值cnt32(包括自己当前行);cnt2值相当于小于等于当前行的SALARY值的所有行数


    SQL>SELECT last_name, salary, COUNT(*) OVER () AS cnt1,
    COUNT(*) OVER (ORDER BY salary) AS cnt2,
    COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING
    AND 150 FOLLOWING) AS cnt3 FROM employees; 


    示例3.33: RATIO_TO_REPORT
    功能描述:该函数计算expression/(sum(expression))的值,它给出相对于总数的百分比,即当前行对sum(expression)的贡献。

    下例计算每个员工的工资占该类员工总工资的百分比
    SQL>SELECT last_name, salary, RATIO_TO_REPORT(salary) OVER () AS rr FROM employees  WHERE job_id = 'PU_CLERK'; 


    任务实训部分

    1、 假设学校环境如下:

    一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。现要建立关于系、学生、班级的数据库,关系模式如下:

    班级表class(班号classid,专业名subject,系名deptname,入学年份entertime,人数num

    学生表student(学号studentid,姓名name,年龄age,班号classid

    department(系号departmentid,系名deptname

    要求用sql语句完成如下功能:  

    1)建表,并实现如下要求

    A:每个表根据实际定义好主外键关系

    B:系表中编号字段利用数据库自动化增长值实现

    C:每个班级的人数不超过30

    D:学生年龄介于1530之间

    E:学生姓名不能为空,系名不能重复

    2)输入部分测试数据

    department表:

    1  数学

    2 计算机

    3 化学

    4 中文

    5 经济学

    class表:

    101 软件  计算机  1995  20

    102 微电子  计算机  1996  30

    111  无机化学  化学  1995   29

    112 高分子化学  化学 1996  25

    121  统计  数学  1995   20

    131 现代语言  中文  1996  20

    141 国际贸易  经济学  1997  30

    142 国际金融  经济学   1998   14

    student表:

    8101 张三 18  101

    8102 钱四 16  121

    8103 王玲 17  131

    8104 李飞  19  102

    8105 王五  20  141

    3)完成下列查询:

    A:列出所有人数大于等于28的系的编号和名称

    B:列出所有开设超过两个专业的系的名字

    C:显示每个学生的学号、姓名、专业、系名信息

     

    2oracle函数的使用

    针对scott.emp表,实现如下查询操作:

    (1) 把员工姓名和工作连接在一起,中间用--”分隔显示。

    (2) 分别显示工姓名的前三个字符和第四个字符后的内容

    (3) 显示字母T在员工姓名中第一次和第二次出现的位置

    (4) 显示12年前参加工作的员工信息

    (5) 查询在当月倒数第三天参加工作的员工信息

    (6) 显示每个员工的工作天数

    (7) 按照每月30天,计算每个员工的日薪金

    (8) 按照年和月的格式显示员工参加工作的时间(如  SMITH  1980  12

    (9) 查询在19872月到5月参加工作的员工信息(包括2月和5月)

    (10) 显示每个员工的津贴信息,没有津贴就显示0

    (11) 分别显示员工的总人数和津贴不为空的员工人数

    (12) 显示部门最低工资大于900的部门和最低工资

    (13) 显示每个部门工资在1400以上的所有员工的工资总额

    (14) 显示部门名称以及该部门的员工总数,没有员工的以0显示

    (15) 显示每个部门中最高工资的员工信息

    (16) 计算每个部门的员工工资排名

    (17) 计算每个部门的员工工资占整个部门的工资比例

    (18) 计算同一部门员工的薪水累积值

     

    3、员工培训系统的案例

    Employee员工表:

    EID       Name     Department     Job    Email    password

        10001      李明      SBB           EG

    10003      李四      LUCK        ITM

    11045      胡斐      SBB           EG

    10044      张三      MTD         ETN

    10023      王刚      MMM        ETN

    Training 培训记录表:

    CourseId    EID      Course     Grade     orders

    1          10001     T-SQL     60

    3          11045     java       71

    2          10003     oracle     59

    1          10003     T-SQL     90

    3          10044     java       78

    2          10001     oracle      69

    2          10023     oracle      70

    3          20001     Java       69

    3          10078     Java       58

    完成如下sql语句:

    1)建立两个表的表结构,自行分析,根据需要设置主键

    2)用sql语句进行册书数据的添加

    3)列出所有员工参加培训的情况,要求显示:EIDNamedepartmentcoursegrade用一条sql语句完成

    4)列出未参加培训的员工信息,显示格式如上

    5)列出所有各课成绩最高的员工信息,显示格式如上

    6)把所有表2有但表1没有的员工编号插入表1中,一条语句完成

    7)统计各部门的人数

    8)统计各部门中姓李的人数

     

     

    巩固练习

    1.Oracle返回“Hello World”的函数是:()

    A.UPPER

    B.LOWER

    C. INITCAP

    D.CONCAT

     

    1. 下面哪个分析函数返回连续的重复的行编号()

    A.ROW_NUMBER

    B.RANK

    C.DENSE_RANK

     

    2. SELECT ROUND (164.1666,-2) FROM DUAL返回值()

    A.100

    B.150

    C.200

    D.160

     

    4.Oracle分析函数的特征有()

    A.可以带over(partition by..order ..)

    B.分析函数用于计算基于组的某种聚合值

    C.它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。

    D.over在每组中定义了一个滑动窗口

     

     


    展开全文
  • PyTorch学习之十种优化函数

    万次阅读 多人点赞 2019-01-01 11:29:08
    AdaGrad算法就是将每一个参数的每一次迭代的梯度取平方累加后在开方,用全局学习率除以这个数,作为学习率的动态更新。 其中, r r r 为梯度累积变量, r r r 的初始值为0。 ε ε ε 为全局学习率,需要自己设置...
  • PyTorch学习笔记(20) ——激活函数

    千次阅读 2020-05-02 12:44:23
    0. 前言 本博客内容翻译自纽约大学数据科学中心在2020发布的《Deep ...本内容将回顾一些重要的激活函数以及其在PyTorch中的实现,它们来自各种各样的论文,并在一些任务上有着优异的表现~ ReLU torch.nn.ReLU(...
  • 《MySQL 入门教程》第 22 篇 窗口函数

    千次阅读 2020-08-25 17:52:39
    窗口函数(Window Function)是 MySQL 8.0 新增的一个重要的功能,可以为数据分析提供强大的支持,例如计算分组排名、累积求和、同比/环比增长率等。本文介绍了 MySQL 窗口函数的语法以及常用窗口函数的作用,例如 ...
  • 如何在Keras中创建自定义损失函数

    千次阅读 2019-12-02 08:43:54
    ,用 Python 语言编写。Keras 不支持低级计算,但它运行在诸如 Theano 和 TensorFlow 之类的库上。 在本教程中,我们将使用 TensorFlow 作为 Keras backend。backend 是一个 Keras 库,...keras 中常用的损失函数 ...
  • 函数性质

    千次阅读 2019-07-12 19:53:04
    函数定义 一个函数是凸的,当且仅当其在与其定义域相交的任何直线上都是凸的。 如果是在高维空间的话,我们可以引进新的定义 ② 凸函数的第三个性质:一阶条件 ③ 我们可以通过下面的图片理解凸函数的一阶条件...
  • Hive2.1函数列表

    千次阅读 2018-06-07 10:32:34
    函数 运算符 函数 自带函数 用户自定义函数
  • c语言函数详解

    千次阅读 2017-03-12 09:54:02
    程序片段(01):函数.c+call.c+测试.cpp  内容概要:函数 ///函数.c #include #include //01.函数: // 1.函数的作用:重用代码,重用功能 // 表象:代码的封装,代码的重用 // 实质:功能的封装,功能的重用 int main01...
  • matlab函数总结

    千次阅读 2018-07-28 10:38:58
    ndims(A)返回A的维数 size(A)返回A各个维的最大元素个数 length(A)返回max(size(A)) [m,n]=size(A)如果A是二维数组,返回行数和列数 nnz(A)返回A中非0元素的...MATLAB的取整函数:fix(x), floor(x) :,ceil(x) , ro...
  • SQL内置函数

    千次阅读 2015-11-14 19:10:21
    MAC系统安装MySqlSQL基础利用SELECT检索数据SQL内置函数 注意:本篇博文主要讲解oracle上的sql知识,然后是在mysql做测试。 sql语法是不区分大小写的。 数据库中有多种内置函数,本篇文章主要介绍其中的两种,...
  • Oracle SQL 提供了用于执行特定操作(超级便捷~)的专用函数。这些函数大大增强了(岂止是大大的~) SQL 语言的功能。函数可以接受零个或者多个输入参数,并返回一个输出结果。
  • Hive函数大全

    万次阅读 多人点赞 2013-12-17 14:18:06
    取整函数 : round 语法 : round(double a) 返回值 : BIGINT 说明 : 返回 double 类型的整数值部分 (遵循四舍五入) 举例: hive> select round(3.1415926) from lxw_dual; 3 hive> select ...
  • hive函数大全

    千次阅读 2016-08-02 12:15:04
    2. 指定精度取整函数: round 语法: round(double a, int d) 返回值: DOUBLE 说明:返回指定精度d的double类型 举例: hive> select round(3.1415926,4) from lxw_dual; 3.1416   3. 向下...
  • python 实验八 函数 (下)

    万次阅读 多人点赞 2021-05-25 15:24:05
    编写一个函数,接受一个列表最为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变源列表的值。最后在主程序中测试该函数。 def fun(ls): for n in ls: if ls.count(n) > 1: return True ...
  • PB函数大全

    千次阅读 2013-04-17 15:26:37
    参数n:要得到绝对值的数值型变量或表达式返回值返回值的数据类型与n的数据类型相同,函数执行成功时返回n的绝对值。如果参数n的值为NULL,Abs()函数返回NULL。Ceiling() 功能返回大于n的最小整数。
  • Matlab常用函数

    千次阅读 2014-06-03 10:15:00
    Matlab有没有求矩阵行数/列数/维数的函数? ndims(A)返回A的维数 size(A)返回A各个维的最大元素个数 length(A)返回max(size(A)) [m,n]=size(A)如果A是二维数组,返回行数和列数 nnz(A)返回A中非0元素的个数 ...
  • Oracle 函数大全

    千次阅读 2012-07-08 21:20:18
    F.1字符函数——返回字符值   (chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace, trim/ltrim/rtrim,soundex,substr,translate,upper)
  • oracle常用函数详解(详细)

    万次阅读 多人点赞 2013-11-05 16:57:17
    Oracle SQL 提供了用于执行特定操作的专用函数。这些函数大大增强了 SQL 语言的功能。...比如:MOD(x,y)返回 x 除以 y 的余数(x 和 y 可以是两个整数,也可以是表中的整 数列)。常用的
  • SQL ——窗口函数简介

    万次阅读 2018-11-28 22:23:20
    1、窗口函数的描述 2、窗口函数中的元素 2.1、分区 2.2、排序 2.3、框架 3、支持窗口函数的查询元素 4、窗口函数类别 4.1、排名函数 4.2、分布函数 4.3、偏移函数   1、窗口函数的描述 窗口函数作用于...
  • Oracle所有分析函数

    万次阅读 多人点赞 2016-04-05 17:20:29
    Oracle分析函数   Oracle分析函数——函数列表   SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于...
  • 1.1 激活函数 关于激活函数,首先要搞清楚的问题是,激活函数是什么,有什么用?不用激活函数可不可以?答案是不可以。激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性...
  • Hive时间处理函数

    千次阅读 2017-08-04 12:02:49
    日期函数UNIX时间戳转日期函数:from_unixtimefrom_unixtime(bigint unixtime[, string format])返回值:string说明:转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:Hive>...
  • WindowsAPI函数大全

    千次阅读 2016-08-08 12:33:18
    Api函数函数说明 WIN16可用 WIN95可用 WINNT可用 AbortDoc 终止一项打印作业 是 是 是 AbortPath 终止或取消DC中的一切路径 否 是 是 AbortPrinter 删除打印机缓冲文件 否 是 是 ...
  • 上一节我们讲完了各种激励函数的优缺点和选择,以及网络的大小以及正则化对神经网络的影响。这一节我们讲一讲输入数据预处理、正则化以及损失函数设定的一些事情。 2. 数据与网络的设定 前一节提到前向计算涉及到的...
  • oracle函数

    千次阅读 2014-02-22 08:41:19
    ORACLE中的SQL函数 一般可以分为数值函数,字符函数,日期函数,转换函数,聚集函数;   ABS(n)返回n的绝对值 CELL(n)返回大于等于n的最小整数 ...MOD(m,n)返回m除以n的余数 POWER(m,n)返

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,055
精华内容 24,022
关键字:

增函数除以增函数