sqlservercount计算可能出现惯性思维计算错误的问题避坑
简书链接:sqlservercount计算可能出现惯性思维计算错误的问题避坑文章字数:76,阅读全文大约需要1分钟有一个a表left join 关联b表查询 where为b.name is null 那么查到的都是b表没有的记录 select count(b.name) from a a left join b b on a.name =b.name where b.name is null在ssms会提示一个警告null为被抹除,假设实际上有5条记录但是得到的还是0 ,所以改为 count(*)或者count(a.name)就能正常计算了
SQLSERVER一个简单的CTE
简书链接:SQLSERVER一个简单的CTE文章字数:31,阅读全文大约需要1分钟 1234567 ;WITH T (A) AS ( SELECT 'X' A)SELECT * FROM T
sqlserver常用的字符串操作
简书链接:sqlserver常用的字符串操作文章字数:133,阅读全文大约需要1分钟案例 1IF PATINDEX ('%[0-9]%' , SUBSTRING('ABCDEFG',3,1))=1 -- 取出第三位C 1SUBSTRING('ABCDEFG',3,1) 判断是否是数字 这里返回0if (PATINDEX ('%[0-9]%' ,'C')=1替换所有的-为_ 1select replace('FF_ff-ff','-','_') 重复5次_ 1select REPLICATE('_', 5) 查找abc**中是否有_从第2位开始, sql server 位置从1开始 而且是先是需要找的字符,第二个参数才是被找字符串,我老容易混淆 1select CHARINDEX('_', 'abcd_ddddd', 2); 巧妙实现补0这里是A补3位...
sqlserver分别判断用户表表和临时表不存在的方法
简书链接:sqlserver分别判断用户表表和临时表不存在的方法文章字数:20,阅读全文大约需要1分钟临时表方法 1234567891011IF OBJECT_ID('tempdb..#TempTable') IS NULLBEGIN CREATE TABLE #TempTable ( WO_SEQUENCE varchar(50), STATION_NO varchar(50),FEEDER_NO varchar(50), REEL_NO varchar(50), REEL_QTY int )select 'NOT EXIST!'ENDELSEBEGINSELECT 'EXIST!'END 用户表方法 123456789101112 IF ( SELECT * FROM sys.tables WHERE name = N'LZtable' AND schema_id = SCHEMA_ID(N'dbo') )BEGINselect...
sqlserverintot2到临时表的几种用法
简书链接:sqlserverintot2到临时表的几种用法文章字数:686,阅读全文大约需要2分钟 无需创建临时表结构自动识别INTO #t2 通常用于将查询结果集插入到一个临时表(以 # 开头的表名表示这是一个本地临时表,仅在当前会话中可见)中。以下是一些使用 INTO #t2 将数据插入到临时表的常见用法 1234SELECT column1, column2, ...INTO #t2FROM SomeTableWHERE some_condition; 使用现有表结构创建临时表如果你已经有一个现有的表,并且想要创建一个具有相同结构的临时表,你可以先使用 SELECT INTO 从该表中选择所有列(或所需列),但不指定 WHERE 条件(或指定一个总是为真的条件,如 1=1),以便将所有列都复制到临时表中(但不会有数据,除非你确实想要复制数据)。然而,更常见和推荐的做法是使用 CREATE TABLE 语句并指定列和数据类型,如下所示: 123456789101112-- 不推荐的方法,因为不直观且可能包含不必要的数据SELECT *INTO #t2FROM...
sql对某字段以分隔符的进行不足补0转行
简书链接:sql对某字段以分隔符的进行不足补0转行文章字数:200,阅读全文大约需要1分钟 1234567891011121314151617181920212223242526272829303132333435363738 -- 声明输入字符串和临时表DECLARE @inputString NVARCHAR(MAX) = 'AD_1_D1_2_3_6fff3';DECLARE @tempTable TABLE (PartNumber INT, PaddedPart NVARCHAR(10)); -- 初始化变量DECLARE @start INT = 1;DECLARE @end INT;DECLARE @part NVARCHAR(MAX);DECLARE @maxLength INT = 4; -- 假设每个部分要补足到4位DECLARE @partNumber INT = 1; -- 用于跟踪部分编号 -- 使用 WHILE 循环来分割字符串WHILE CHARINDEX('_', @inputString, @start)...