sqlserver null值比对不出结果 test01表的数据如下:test02表的数据如下:使用left join 关联test01和test02时,带入name字段匹配不出数据:select t1.id,t1.name,t2.id,t2.name from test01 t1 left join test02 t2 on t1.id=t2.id where t1.name!=t2.name;使用如下语句可以查询出结果with t1 as(select id,isnull(name,'0') name from
bat去掉文件每一行开头和末尾 这是bat脚本,这里并没有使用变量延迟setlocal enabledelayedexpansion,因为文件中使用的!作为分隔符一旦使用setlocal enabledelayedexpansion会导致!不可用,因为!是特殊符号,因此使用call echo %%的方式截取字符@echo offfor /f "delims=" %%i in (C:\workstation\MIG\test.csv) do ( set a=%%i call echo %%a:~1,-1%%)...
Windows定时任务 指定一个计划任务schtasks /create /tn upload /tr "C:\upload\upload.bat" /sc daily /st 06:00schtasks /delete /tn "upload_persistency" 删除计划任务每个月的1号上午6点运行schtasks /create /tn upload_01 /tr "C:\upload\upload.bat" /sc monthly /d 01 /m * /st 06:00每个月的16号上午6点运行sc
sqlserver 导出数据到文件 1.BCP全表导出BCP test.[dbo].table out aaa.csv -S gtest.database.windows.net -U test01 -P test01 -c根据sql查询导出BCP "select * from table" queryout aaa.csv -S gtest.database.windows.net -U test01 -P test01 -c -t , -d test导入bcp test.dbo.table in aaa.csv -
sqlcmd去掉表头和X行受影响 使用sql语句导出到文件sqlcmd -d test01 -U test01 -P test01-S testdb.database.windows.net -Q "select * from test01" -o "test01.csv" -s "," -W -h-1 -k1-d:数据库名-U 用户名-P 密码-S 服务器名-Q 执行查询后退出-o 输出到文件-s 分隔符-W 删除每个字段后面的空格-h-1 不显示表头-k1 将制表符替换为空格上面的语句..
sql优化浅析 查询优化尽量不要使用or连接查询,到导致全表扫描,可以使用union代替尽量避免使用is null或is not null进行匹配会导致索引失效进行全表扫描,这里并不是说一定不会走索引,但是有很大可能性会索引失效使用in 和not in会导致全表扫描,可以使用 exists或者notexists代替不要在where表达式左侧使用表达式或者函数进行匹配,例如where to_date('20200101','yyyymmdd')='20200101'使用like进行模糊查询时左侧尽量不要.
sqlserver 返回当月最后一天,上个月最后一天,下个月最后一天 select eomonth('20211118'); --返回指定日期当月最后一天select eomonth('20211118',1) --返回指定日期下个月的最后一天select eomonth('20211118',-1) --返回指定日期上个月的最后一天select dateadd(day,2,'2004-10-15') --返回指定日期加上2天select datediff(day,'2004-09-01','2004-09-18') --返回跨两个指定日期的日期和时间边界数...
sqlserver merge用法 merge into CE_POLICY_RPL as Ausing select INSUREDNAME,BALANCE from IN_STAGE_NEW_POL)B on A.INSUREDNAME=B.INSUREDNAMEwhen matched then --条件匹配用update update set A.BALANCE=B.BALANCE,UPDATEDATE=getutcdate()when not matched then --条件不匹配用insert insert .
SQL server判断是否为数字 select PATINDEX('%[^0-9|.|-|+]%','123.4');是就返回0不是就返回1或者其他的数字PATINDEX简析:1.类似于sql里面的like用法,%%匹配到指定表达式里的位置,一个都没有找到就返回0找到了就返回所在位置如:select PATINDEX('%2%','123.4');这里会返回2,因为2在123.4里面所处的位置是第二位。2.select PATINDEX('2%','123.4');意思是从左边开始找,找到了返回1找不到返回0,不管后面有
sqlserver索引和主键 非聚集索引:1.创建索引时若未指定索引类型则默认为非聚集索引2.每张表最多可以有249个非聚集索引3.行的物理位置不按索引的顺序排序4.只有查询在具有高度选择性的情况下,非聚集索引才有优势5.一个索引可以多个字段来定义聚集索引:1.行的物理位置和行在索引中的位置是一样的2.每张表只能有一个聚集索引3.聚集索引可以提高大多数表的性能4.对数据行的排序,方便查询5.一个索引可以多个字段来定义6.创建聚集索引时如果数据里面已经有重复值将不能使用IGNORE_DU