zoukankan      html  css  js  c++  java
  • Sql常用语句

     MySQL

    select cast((cast(sysdate()as Date) - interval 1 day) as datetime) as YesDay     获取当前时间的前一天凌晨
    
    select * from [table] where DATE_FORMAT(ModifiedDate,'%Y-%m-%d') = '2019-01-10'  根据时间查询  

    动态执行sql

    SET @tb=(select GROUP_CONCAT(table.filed) from table);
    SET @sql = CONCAT('SELECT * FROM ', @tb);
    PREPARE st FROM @sql;
    EXECUTE st;
    DEALLOCATE PREPARE st;

     批量删除外键

    select GROUP_CONCAT(m.shell separator ';') from  (SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,'') shell
    FROM information_schema.TABLE_CONSTRAINTS c 
    WHERE c.TABLE_SCHEMA='erp' AND c.CONSTRAINT_TYPE='FOREIGN KEY') m;

     Sql Server

    字段值拆分 a/b/c -> province:a,city:b,district:c

    SELECT
        ti.name,
        PARSENAME(REPLACE([region],'/','.'),3) as province,
        PARSENAME(REPLACE([region],'/','.'),2) as city,
        PARSENAME(REPLACE([region],'/','.'),1) as district
    FROM
        tmp_institution ti

    日期转换

    CONVERT(VARCHAR(10),GETDATE(),120) # 2019-11-20
    
    CONVERT(VARCHAR(10),'2019-11-20T00:00',127) # 2019-11-20

    省市单列值拆分成列

    with pre_where as (
        SELECT id,value,row_number() over(PARTITION by id order by id) as rank
        FROM (select '1' as id,'黑龙江省-哈尔滨市' as province_city
              union all
              select '2' as id,'山东省-临沂市' as province_city) t
        CROSS APPLY STRING_SPLIT(province_city, '-')
    )
    select 
    ps.id,
    ps.value as province,
    cs.value as city
    from pre_where ps
    inner join pre_where cs on cs.id = ps.id
    where ps.rank = 1 and cs.rank = 2

     获取表字段信息

    declare @structure table(
        TABLE_QUALIFIER VARCHAR(255),
        TABLE_OWNER VARCHAR(255),
        TABLE_NAME VARCHAR(255),
        COLUMN_NAME VARCHAR(255),
        DATA_TYPE VARCHAR(255),
        TYPE_NAME VARCHAR(255),
        "PRECISION" VARCHAR(255),
        "LENGTH" VARCHAR(255),
        SCALE VARCHAR(255),
        RADIX VARCHAR(255),
        NULLABLE VARCHAR(255),
        REMARKS VARCHAR(255),
        COLUMN_DEF VARCHAR(255),
        SQL_DATA_TYPE VARCHAR(255),
        SQL_DATETIME_SUB VARCHAR(255),
        CHAR_OCTET_LENGTH VARCHAR(255),
        ORDINAL_POSITION VARCHAR(255),
        IS_NULLABLE VARCHAR(255),
        SS_DATA_TYPE VARCHAR(255)
    );
    insert into @structure EXEC sp_columns @table_name = '%',@table_owner = 'dbo';
    select
     s.column_name AS [column],
     replace(dbo.Proper(s.column_name),'_','') as property_key
    from @structure s

     驼峰方法

    Create Function dbo.Proper(@Data VarChar(8000))
    Returns VarChar(8000)
    As
    Begin
      Declare @Position Int
    
      Select @Data = Stuff(@Data, 1, 1, LOWER(Left(@Data, 1))),
             @Position = PatIndex('%[^a-zA-Z][a-z]%', @Data COLLATE Latin1_General_Bin)
    
      While @Position > 0
        Select @Data = Stuff(@Data, @Position, 2, Upper(SubString(@Data, @Position, 2))),
               @Position = PatIndex('%[^a-zA-Z][a-z]%', @Data COLLATE Latin1_General_Bin)
    
      Return @Data
    End
    
    declare @structure table(
        TABLE_QUALIFIER VARCHAR(255),
        TABLE_OWNER VARCHAR(255),
        TABLE_NAME VARCHAR(255),
        COLUMN_NAME VARCHAR(255),
        DATA_TYPE VARCHAR(255),
        TYPE_NAME VARCHAR(255),
        "PRECISION" VARCHAR(255),
        "LENGTH" VARCHAR(255),
        SCALE VARCHAR(255),
        RADIX VARCHAR(255),
        NULLABLE VARCHAR(255),
        REMARKS VARCHAR(255),
        COLUMN_DEF VARCHAR(255),
        SQL_DATA_TYPE VARCHAR(255),
        SQL_DATETIME_SUB VARCHAR(255),
        CHAR_OCTET_LENGTH VARCHAR(255),
        ORDINAL_POSITION VARCHAR(255),
        IS_NULLABLE VARCHAR(255),
        SS_DATA_TYPE VARCHAR(255)
    );
    insert into @structure EXEC sp_columns @table_name = '%',@table_owner = 'dbo';
    select
     s.column_name AS [column],
     replace(dbo.Proper(s.column_name),'_','') as property_key
    from @structure s
    where s.table_name = 'table_name'

     创建测试数据

    if OBJECT_ID(N'[test_person]',N'U') is not null
        drop table [test_person];
    
    CREATE TABLE [dbo].[test_person] (
      [id] varchar(255) NOT NULL,
      [code] varchar(255) NULL,
      [name] varchar(255) NULL,
      [age] int NULL,
      [created_time] datetime2 NULL,
      PRIMARY KEY ([id])
    );
    
    -- 取指定范围内的随机时间
    declare @Date_start datetime 
    declare @Date_end datetime 
    set @Date_start= '2018-06-01' 
    set @Date_end=getdate();
    
    -- 取指定范围内的随机数
    DECLARE @range_number INT
    DECLARE @left INT
    DECLARE @right INT
    
    -- 取随机名字
    DECLARE @fName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 姓氏
    DECLARE @lName TABLE(Id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(20)) -- 名字
    
    INSERT @fName VALUES
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),('')
    
    INSERT @lName VALUES 
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),('殿'),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),('广'),(''),
    (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),(''),('鸿'),(''),(''),(''),(''),
    (''),(''),(''),('');
     
    SET @left = 20
     
    SET @right = 50
    
    DECLARE @n INT
    SET @n=1
    WHILE @n <= 10000
      BEGIN
          INSERT [test_person]([id],[code],[name],[age],[created_time])
          VALUES ( Newid(),
                   '48'+ RIGHT(Cast(@n AS NVARCHAR(10)), 8),
                   (SELECT RTRIM((SELECT NAME FROM @fName WHERE Id = Round(Rand()*(100-1)+1,0)))+RTRIM(LTRIM((SELECT NAME FROM @lName WHERE Id = Round(Rand()*(100-1)+1,0))))+RTRIM(LTRIM((SELECT NAME FROM @lName WHERE Id = Round(Rand()*(100-1)+1,0))))),
                   (select ROUND(((@right - @left -1) * RAND() + @left), 0)),
                   (select dateadd(minute,abs(checksum(newid()))%(datediff(minute,@Date_start,@Date_end)+1),@Date_start)));
          SET @n=@n + 1
      END
    
    select
    *
    from test_person
  • 相关阅读:
    项目目标文档
    系统利益相关者描述案例
    软件需求模式 读书笔记二
    软件需求分析 读书笔记1
    专业实训题目需求分析
    2015年秋季个人阅读计划
    CodeVs 1615 数据备份
    HDU 3900 Unblock Me
    HDU 5898 odd-even number
    HDU 5877 Weak Pair
  • 原文地址:https://www.cnblogs.com/chenzhaoyu/p/9553378.html
Copyright © 2011-2022 走看看