
SQL Server
吉普赛的歌
这个作者很懒,什么都没留下…
展开
-
SqlServer: 如何强制创建表时一定要有主键
开发创建表时,经常有人不加主键,这会带来一定的问题,如何强制一定要加主键呢?原创 2024-12-17 14:01:25 · 132 阅读 · 0 评论 -
SqlServer: 如何处理字段中混入了不可见字符及如何避免以后再发生
在实际的生产中,用户输入的字符串其实是很容易混入一些不可见字符的,这对数据库的维护是非常不利的,那如何处理呢?如下的代码,很容易看到,整理过的字符串只有11位的长度,但混进了不可见符就有12位了。注:函数 Fun_GetMatchString 请在链接中找。再增加检查约束,确保以后也不能再混入不可见字符。我们先修正这个字段,保证只有纯数字和字符。原创 2024-09-14 14:38:26 · 410 阅读 · 0 评论 -
SqlServer: 安装或升级到SqlServer2022
简单注册一下之后,就可以下载安装包了。原创 2024-09-03 17:10:14 · 1495 阅读 · 0 评论 -
SqlServer: LAG等开窗函数应用
【代码】SqlServer: LAG等开窗函数应用。原创 2024-07-20 09:25:52 · 600 阅读 · 0 评论 -
SqlServer: 如何产生没有重复的报名编号
某一期的报名过程中,希望报名能做到报名从1开始,从小到大依次来。但实际执行过程中,报名编号非常容易重复。原创 2024-06-04 14:01:45 · 498 阅读 · 0 评论 -
SqlServer:smalldatetime的范围问题
smalldatetime 只能精确到分钟,但用字符串转为smalldatetime时的细节你有注意过吗?29秒之前会是当前的分钟,30秒之后是后面的一分钟。原创 2024-02-20 12:29:38 · 640 阅读 · 0 评论 -
SqlSever: nvarchar 与 varchar 有什么区别?
许多小伙伴在设计表时,不太明白 varchar 和 nvarchar 有什么区别,直接用 varchar 来代替nvarchar 了。实际上使用时,好像也能用,存储汉字英文都没问题。如果我们将字段全定义为 not null ,就避免了这种事情的发生,何乐而不为?但可能存储英文和数字之外的字符,那还是 nvarchar 吧。当然,不一定得非缅文,其它一些不常见的字符也有可能导致报错。所以,英文和数字,就用 varchar ,这个比较节省空间。说白了,就是某个地方的对象或属性为 null 了。原创 2023-07-21 17:44:22 · 264 阅读 · 0 评论 -
SqlServer: 获取某个表某个字段的默认值
【代码】SqlServer: 获取某个表某个字段的默认值。原创 2023-06-07 08:53:53 · 786 阅读 · 0 评论 -
Sql注入示例
Sql注入是我们经常听说的,具体极大的风险性,下面给一个比较直观的示例:原创 2023-05-19 08:35:22 · 1347 阅读 · 0 评论 -
SqlServer: 如何查看存储过程每一步的消耗时间
【代码】SqlServer: 如何查看存储过程每一步的消耗时间。原创 2023-03-31 15:19:55 · 1150 阅读 · 0 评论 -
SQL:如何判断两个表的内容是否一致?
有时我们会碰到需要批量判断2个表的内容是否一致,可以借用 checksum 函数。原创 2023-03-08 14:15:58 · 3133 阅读 · 2 评论 -
SQL Server:json与xml 传参对比
json与xml 是比较好的传参方式,那哪个比较优秀呢?原创 2023-01-11 17:26:33 · 268 阅读 · 1 评论 -
将字符串分解为单个字符的表
对于只取字符串中需要的字符非常有用处原创 2022-10-14 17:56:37 · 253 阅读 · 0 评论 -
VS Code 连接SQL Server
按下面图片,一步步点就可以了原创 2022-07-27 16:30:09 · 1357 阅读 · 0 评论 -
Values作为表使用
--Values作为表使用SELECT string_agg(v.userTypeDesc, ',')FROM (VALUES (1, 'A'), (2, 'B'), (4, 'C')) AS v(userType, userTypeDesc)原创 2022-03-10 10:48:24 · 297 阅读 · 0 评论 -
SqlServer: 如何处理嵌套的存储过程事务出错的情况
USE tempdbGOIF OBJECT_ID('proc1') IS NOT NULL DROP PROC proc1GOIF OBJECT_ID('proc2') IS NOT NULL DROP PROC proc2GOCREATE PROC proc1@p INTASBEGIN SET NOCOUNT ON BEGIN TRY BEGIN TRAN SELECT @@TRANCOUNT AS 'proc1.1 @@TRANCOUNT' PRINT 2.0/@p.原创 2021-12-30 16:00:10 · 902 阅读 · 0 评论 -
SET XACT_ABORT ON/OFF测试
IF OBJECT_ID(N't2', N'U') IS NOT NULL DROP TABLE t2;GO IF OBJECT_ID(N't1', N'U') IS NOT NULL DROP TABLE t1;GOCREATE TABLE t1 (a INT NOT NULL PRIMARY KEY);CREATE TABLE t2 (a INT NOT NULL REFERENCES t1(a));GOINSERT INTO t1 VALUES (1);.原创 2021-12-20 08:34:25 · 245 阅读 · 0 评论 -
SqlServer where :如果前面的条件不满足,后面不会执行
sqlserver中 where :如果前面的条件不满足,后面不会执行。USE tempdbGOIF OBJECT_ID('t') IS NOT NULL DROP TABLE tGOCREATE TABLE t( id INT IDENTITY(1,1) PRIMARY KEY, c1 VARCHAR(20), c2 INT )GOSET NOCOUNT ON;INSERT INTO t(c1,c2) VALUES(NULL,0),(1,3)SELECT * FRO原创 2021-12-10 09:40:08 · 1809 阅读 · 0 评论 -
将各种不同表头的数据存放到同一个表的探讨
USE tempdbGOIF OBJECT_ID('tab_header') IS NOT NULL DROP TABLE tab_headerGOIF OBJECT_ID('tab_data') IS NOT NULL DROP TABLE tab_dataGOCREATE TABLE tab_header( headerId INT IDENTITY(1,1) PRIMARY KEY, tabFlagId INT NOT NULL, colId INT NOT NULL, co.原创 2021-12-03 08:48:29 · 463 阅读 · 0 评论 -
IDENT_CURRENT、@@IDENTITY和SCOPE_IDENTITY()区别
USE tempdbGOIF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1GOIF OBJECT_ID('t2') IS NOT NULL DROP TABLE t2GOGOCREATE TABLE t1(id int IDENTITY)CREATE TABLE t2(id int IDENTITY(100,1))GOCREATE TRIGGER trig_t1_I ON t1 FOR INSERT ASBEGIN INSERT.原创 2021-11-30 15:50:50 · 584 阅读 · 2 评论 -
SqlServer: 存储过程传表类型参数的三种方式:表值参数/XML/JSON
在使用过程中,传一个表(数据集)的需求是真实存在的,经常有人问。于是,总结了以前零零散散的知识,汇集为本文,分享给读者。USE tempdbGOIF OBJECT_ID('t') IS NOT NULLDROP TABLE tGOCREATE TABLE t( cid INT PRIMARY KEY, num INT, d DATE --SqlServer2005需要改为datetime)GOSET NOCOUNT ONINSERT INTO t VALUES(1,2原创 2021-11-11 09:13:51 · 6654 阅读 · 0 评论 -
SqlServer: xml与表互相转换
DECLARE @t TABLE ( cid INT, num INT, d DATE )INSERT INTO @t VALUES(1,23,'2021-11-10'),(2,45,'2021-11-11');-------- 以上为测试数据 ---------1. 表转xmlSELECT * FROM @t FOR XML PATH('row')--<row><cid>1</cid><num>23</num><d.原创 2021-11-11 08:36:04 · 1242 阅读 · 0 评论 -
如何用触发器记录表字段的变化情况
USE tempdbGOIF OBJECT_ID('t') IS NOT NULLDROP TABLE tGOCREATE TABLE t( id INT IDENTITY(1,1) PRIMARY KEY, c1 NVARCHAR(10) NOT NULL, c2 INT )GOSET NOCOUNT ONINSERT INTO t (c1,c2) VALUES('a',1)INSERT INTO t (c1,c2) VALUES('b',2)INSERT INTO t (c.原创 2021-11-10 21:11:59 · 617 阅读 · 1 评论 -
SqlServer: 用排序规则处理查询不出来的生僻字
SELECT * FROM dbo.tableName AS zWHERE z.stuname LIKE N'%䶮%' COLLATE Chinese_PRC_BIN原创 2021-11-08 16:14:30 · 778 阅读 · 0 评论 -
身份证地区码数据表-SqlServer版
太大了没办法发在博客,下面是下载地址:https://download.youkuaiyun.com/download/yenange/33310707原创 2021-10-19 10:52:34 · 547 阅读 · 0 评论 -
表值函数中调用自定义表类型Demo
USE tempdbGOIF OBJECT_ID('dbo.Fun_Test') IS NOT NULL DROP FUNCTION dbo.Fun_TestGOIF EXISTS(SELECT 1 FROM sys.types WHERE name='type_table') DROP TYPE dbo.type_tableGOCREATE TYPE dbo.type_table AS TABLE ( c1 INT, c2 VARCHAR(10))GOIF OBJECT_ID.原创 2021-08-09 08:42:48 · 123 阅读 · 0 评论 -
SqlServer: 用链接服务器在远程服务器上创建和执行存储过程
--[lnkServerName] --链接服务器名称,自己替换--[dbName] --数据库名称,自己替换--------------- 1. 用链接服务器创建远程服务器上的存储过程 --------------exec [lnkServerName].[dbName].dbo.sp_executesql N'create proc proc_testASbegin select 1end';goEXEC [lnkServerName].[dbName].d.原创 2021-03-29 14:37:25 · 933 阅读 · 0 评论 -
OPENJSON 简单应用
--适合于 SQL Server2016+USE [tempdb]GOCREATE OR ALTER PROC [dbo].[Proc_Test] @json NVARCHAR(MAX) = '[{"GoodsId": 3, "Quantity": 10}, {"GoodsId": 8,"Quantity": 20}]'ASBEGIN SET NOCOUNT ON; SELECT goodsId,quantity FROM OPENJSON(@json) WITH ( goods.原创 2021-03-02 08:21:05 · 697 阅读 · 0 评论 -
如何根据某一行更新另一行的内容?
USE tempdbGOIF OBJECT_ID('t') IS NOT NULLDROP TABLE tGOCREATE TABLE t( stuId INT IDENTITY(1,1) PRIMARY KEY, stuName nvarchar(10) NOT NULL, score INT NOT NULL )GOINSERT INTO t(stuName,score) VALUES('小明',10)INSERT INTO t(stuName,score) VALUES('小.原创 2021-02-05 14:53:39 · 454 阅读 · 0 评论 -
SQL Server: 将截断字符串或二进制数据,快速判断哪个字段超长
上面的出错, 用 SQL Server 的人基本上都遇到过。如果某个表的字段少还好, 有几十甚至更多字段就抓瞎了,如何快速判断哪个字段超长呢?先创建一个存储过程:IF OBJECT_ID('Proc_Util_GetLenOverflowColumns') IS NOT NULL DROP PROC Proc_Util_GetLenOverflowColumnsGO-- =============================================-- Author: y..原创 2020-10-09 19:47:25 · 8023 阅读 · 2 评论 -
Notepad++使用SQL格式化插件
一、找到下载插件地址:https://www.sqlinform.com/download-free-notepad-plugin/根据你是 64 位还是 32 位Notepad++ 来下载。二、把下载后的插件复制到 Notepad++所在文件夹,例如我的就是:三、打开 Notepad++, 设置=》导入=》导入插件,选择刚才的文件,导入。四、创建新文件,输入 sql , 按快捷键: alt + shift + f , 即可格式化 sql 代码了。...原创 2020-06-04 10:25:13 · 9860 阅读 · 2 评论 -
动态SQL执行带参存储过程
USE tempdbGOIF OBJECT_ID('proc_test') IS NOT NULLDROP PROC proc_testGOCREATE PROC proc_test@p INT=2ASBEGIN SELECT @p AS r;ENDGODECLARE @sql1 NVARCHAR(MAX),@sql2 NVARCHAR(MAX)SET @sql1='proc_test 1'SET @sql2='proc_test'EXEC (@sql1);/*r1*.原创 2020-06-02 08:20:31 · 988 阅读 · 0 评论 -
sqlserver 此数据库没有有效所有者错误的解决方法
解决方法如下: 1、设置兼容级别为90(2005为90)(2000为80) USE [master] GO EXEC dbo.sp_dbcmptlevel @dbname='数据库名', @new_cmptlevel=90 GO [这条命令执行完毕:报“DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系”,不管它哦,接下来点击“数据库关系图”,报“此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建”,选择“是”,问题解原创 2010-10-18 20:56:00 · 1729 阅读 · 0 评论 -
SQL:找到标识列已删除的最小的id值
--从学生表中找到所有id, 并把id全部加1 -- old:1,2,4,5,7 -- new: 2,3,5,6,8 --加1之后的id在原来的表中是找不到的 --not found:3,6,8 --取最小min:3 --妙! select min(t.id) as id from (select id=id+1 from tbL_stu) t where id not in (select原创 2010-11-17 22:09:00 · 1546 阅读 · 0 评论 -
怎么在企业管理器中得到执行一个select语句的毫秒级时间
<br />方法一:<br />declare @d datetime <br />set @d=getdate()<br />select * from authors where au_fname='dirk'<br />select 执行时间=datediff(ms,@d,getdate())<br />方法二:<br />set statistics time on<br />select * from authors where au_fname='dirk'<br />set sta原创 2011-03-10 22:25:00 · 874 阅读 · 0 评论 -
SQL中 NVARCHAR 和 VARCHAR 两者之间的优势与劣势
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段 的类型为nvarchar,则会占用两个字节.<br /> 正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操 作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varcha原创 2011-03-11 14:19:00 · 827 阅读 · 0 评论 -
奇妙的排序规则COLLATE
<br /> 通过 COLLATE 子句,你可以在比较时覆盖替换掉任何默认collation, COLLATE 可以用<br />在SQL 语句的很多部分里,这里是一些例子:<br /><br />1、在 ORDER BY 里:<br />select k<br />FROM t1<br />ORDER BY k COLLATE latin1_german2_ci;<br /><br /><br />2、在 AS 里:<br />select k COLLATE原创 2011-03-15 17:08:00 · 822 阅读 · 0 评论 -
SQL: 跟踪SQL语句的执行情况
来了很多新玩意, entity framework, linq……,搞得人都不会写sql语句了。可是,哪天出错你也不知道错在哪里了…… 无图无真相, 来吧。 想咋看就咋看吧。原创 2011-05-11 20:54:00 · 925 阅读 · 0 评论 -
清空DB连接数
<br />SELECT COUNT(*) 处理前连接数<br />FROM [Master].[dbo].[SYSPROCESSES]<br />WHERE [DBID] IN (SELECT [DBID]<br /> FROM [Master].[dbo].[SYSDATABASES]<br /> WHERE NAME = 'ec01')<br />--将连接设置为单用户<br />ALTER DAT原创 2011-05-20 10:25:00 · 1333 阅读 · 0 评论 -
SQL Server2008安装易出错的处理。
<br />[错误消息] 为 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL Server 代理服务提供有效的帐户和密码。 [详细信息] Microsoft.SqlServer.Configuration.Agent.InputValidationException: 为 SQL Server 代理服务提供的凭据无效。若要继续操作,请为 SQL Server 代理服务提供有效的帐户和密码。 =============================================原创 2011-05-21 11:31:00 · 2750 阅读 · 0 评论