部分方法总结记录

来源:互联网 发布:ummy for mac 编辑:程序博客网 时间:2024/06/06 07:45
--取某年某月的天数:


int daysInFebLeap = System.DateTime.DaysInMonth(2002, 2);


--合并两个dataset:


                DataTable dt3 = dt1.Clone();
                for (int i = 0; i < dt2.Columns.Count; i++)
                {
                    dt3.Columns.Add(dt2.Columns[i].ColumnName);
                }
                object[] obj = new object[dt3.Columns.Count];


                for (int i = 0; i < dt1.Rows.Count; i++)
                {
                    dt1.Rows[i].ItemArray.CopyTo(obj, 0);
                    dt3.Rows.Add(obj);
                }


                if (dt1.Rows.Count >= dt2.Rows.Count)
                {
                    for (int i = 0; i < dt2.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt2.Columns.Count; j++)
                        {
                            dt3.Rows[i][j + dt1.Columns.Count] = dt2.Rows[i][j].ToString();
                        }
                    }
                }
                else
                {
                    DataRow dr3;
                    for (int i = 0; i < dt2.Rows.Count - dt1.Rows.Count; i++)
                    {
                        dr3 = dt3.NewRow();
                        dt3.Rows.Add(dr3);
                    }
                    for (int i = 0; i < dt2.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt2.Columns.Count; j++)
                        {
                            dt3.Rows[i][j + dt1.Columns.Count] = dt2.Rows[i][j].ToString();
                        }
                    }
                }
                dt3.TableName = DTName;


                ds.Tables.Add(dt3);




-- 取最后两位
string year1 = new string(year.Reverse().Take(2).Reverse().ToArray()); 


-- sql 数据分月统计,表中只有每天的数据,现在要求求一年中每个月的统计数据(一条sql)


SELECT
  MONTH (  那个日期的字段  ),
  SUM(  需要统计的字段, 比如销售额什么的 )
FROM
  表
WHERE
  YEAR (  那个日期的字段  ) = 2010   -- 这里假设你要查 2010年的每月的统计。
GROUP BY
 MONTH (  那个日期的字段  )




--查询数据库 某字段重复的记录   --取出重复的记录用 distinct
Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)




--查数据库的所有表名
select  name  from  sysobjects  where  xtype='U' 


--字符串(fieldString)加上指定的分隔符(,)
string.Join(",", fieldString)


--去除字符串 string 以某种分隔符分隔的数据
string exp="abbc-cdde-xxxp";分隔符为"-"
string[] prm=exp.split('-');


取值:
string exp0=prm[0];


--去除字符串“exp”的最后一位
 exp= exp.Substring(0, exp.Length - 1);


--删除某表的某个索引
drop index clk_aaaa_index on clk


--建表的索引
create index clk_aaa_index on clk


---------------------------------------------字段操作
--判断
if exists (select * from syscolumns where id=object_id(表名) and name='列字段')


--修改表名
sp_rename 原表名,新表名
exec sp_rename 原表名,新表名


--加字段
alter table 表名 add[列字段][varchar](10)null


--修改字段
alter table 表名 alter column[列字段][varchar](10) null


--删除字段
alter table 表名 alter drop column[列字段] 


--查字段的默认值
select b.text as 默认值字段名 (随便起)  
from syscolumns a left join syscomments b on a.cdefault=b.id   
where a.id=object_id('表名') and a.name='字段名称'


--添加默认值(注:如果该字段以前已经有默认值了,在修改之前需要先将约束删除,否则会报错)
ALTER TABLE 表名 add DEFAULT ('修改后的默认值') for 字段名 WITH VALUES  


--查表字段的约束名
select c.name from sysconstraints a 
inner join syscolumns b on a.colid=b.colid 
inner join sysobjects c on a.constid=c.id 
where a.id=object_id('表名') 
and b.name='字段名'


--删约束的SQL: 
Alter table 表名 drop constraint 约束名 




--查主键
exec sp_pkeys @table_name='表名' 


--查主键名字
select name from sysindexes where id=OBJECT_ID('表名') and indid>0 and status=2066
select name from sysindexes where id=OBJECT_ID('表名')


--删除主键
ALTER TABLE 表名 drop constraint 主键名  


--添加主键
alter table 表名 add primary key (主键字段)  


--查询外键名,外键对应的主键表名
select name,OBJECT_NAME(referenced_object_id) from sys.foreign_keys where OBJECT_NAME(parent_object_id)='表名'  


--删除外键
alter table表名drop contraint外键名  


--添加外键
alter table 要建立外键的表 add constraint 外键名字 foreign key references 外键表(外键字段)  


--删除字段的默认值(分两步)


    --1、查出某表的某字段的默认值 约束名
    select b.name from syscolumns a,sysobjects b where a.id=object_id('表名') and b.id=a.cdefault and a.name='字段名' and b.name like 'DF%'


    --2、删除某表的某字段的默认值 约束名
 alter table aaaccc drop constraint 查出的要删的默认值   




--字符串t2 是否存在于字符串t1中
方法1:
static void Main(string[] args)
        {
            string t1 = "中华人民共和国";
            string t2 = "华人";
            if (t1.Contains(t2))
            {
                Console.WriteLine("yes");
            }
            else
            {
                Console.WriteLine("no");
            }
        }
运行结果:yes


方法2:
if(t1.IndexOf(t2)>-1)


{


  //字符串A中包含字符串B


}


方法3:
string[] strArr = {"a","b","c","d","e"};
bool exists = ((IList)strArr).Contains("a");
if(exists)
// 存在
else
// 不存在
--sql 函数 处理字符串


create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
as
begin
    declare @i int
    set @SourceSql=rtrim(ltrim(@SourceSql))
    set @i=charindex(@StrSeprate,@SourceSql)
    while @i>=1
    begin
        insert @temp values(left(@SourceSql,@i-1))
        set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
        set @i=charindex(@StrSeprate,@SourceSql)
    end
    if @SourceSql<>'\'
       insert @temp values(@SourceSql)
    return
end


--用法:select * from dbo.f_split('A:B:C:D:E',':')        


--查询一张表的父结点和子结点的语句
表结构:create table aaa(id int null,pid int null,name nvchar(10))
--查询出1结点的所有子结点(不想包含,可以在最后加上:where id<>1)
with my1 as(select * from aaa where id=1 union all select aaa.* from my1,aaa where my1.id=aaa.pid)
select * from my1
--查询出8结点的所有父结点
with my1 as(select * from aaa where id=8 union all select aaa.* from my1,aaa where my1.pid=aaa.id)
select * from my1


--删除1结点和所有子结点的语句
with my1 as(select * from aaa where id=1 union all select aaa.* from my1,aaa where my1.id=aaa.pid)
delete from aaa where exists(select id from my1 where my1.id=aaa.id)




--sql语句中 在存储过程中应用id in (字符串)
CHARINDEX(','+LTRIM(ID)+',',','+字符串+',')>0




---------------------
Merge BarcodeUnit as target 
using(select 'A','A','A ' union select 'A','C','B' union select 'A','D','D') 
as source(SrcBarcode,TagBarcode,OrderBH)
on (target.SrcBarcode=source.srcbarcode and target.tagbarcode=source.tagbarcode)
when MATCHED then
 update set target.orderbh=source.orderbh
 WHEN NOT MATCHED by source and target.srcbarcode='A' THEN
delete 
When NOT  MATCHED by target THEN
 INSERT (SrcBarcode, TagBarcode,OrderBH)
    VALUES (source.SrcBarcode, source.TagBarcode,source.OrderBH)
output inserted.id;
0 0