sql server判断是否重复值

一个字符串为“1;2;1;1;1”。

请问:

如何在SQL SERVER中实现如下功能:

1、判断该字符串中是否存在重复的数字

如果存在重复的数字,返回错误信息

如果不存在重复的数字,返回正确。

思路:分割字符串,将子字符串存入临时表,在临时表进行分组判断

create function RepeatString(@input varchar(8000),@separator varchar(10))
returns  int
as
 begin
    declare @temp table(part varchar(100))
	 declare @i int ,@result int
	 set @input=rtrim(ltrim(@input))
	 set @i=charindex(@separator,@input)
	 while @i>=1
	 begin
			 insert @temp values(left(@input,@i-1))
			 set @input=substring(@input,@i+1,len(@input)[email protected])
			 set @i=charindex(@separator,@input)
	 end
	 if exists(select part,count(*) from @temp group by part having count(*)>1)
	   set @result=1 --存在重复
	   else
	   set @result=0 --不存在重复
	   return   @result
end
go

--测试

select  dbo.RepeatString('1,1,2,3,1',',')  --1
select  dbo.RepeatString('1,2,3,4,5',',')  --0
时间: 2024-11-15 19:12:43

sql server判断是否重复值的相关文章

SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数

-- SQL SERVER 判断是否存在某个触发器.储存过程 -- 判断储存过程,如果存在则删除IF (EXISTS(SELECT * FROM sysobjects WHERE name='procedurename' AND type='P')) DROP PROCEDURE procedurename -- 判断触发器,如果存在则删除IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[triggername]')

SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)

1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = '数据库名')    drop database [数据库名]  if exists (select * from sys.databases where name = '数据库名')  drop database [数据库名]2 判断表是否存在Sql代码 if exists (select * from sysobjects where id = objec

SQL SERVER 判断是否存在数据库、表、列、视图

SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名') DROP DATABASE [数据库名] --2. 判断表是否存在 IF EXISTS (SELECT * FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'[表名]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) PRI

sql server 判断是否存在数据库,表,列,视图

1 判断数据库是否存在if exists (select * from sys.databases where name = '数据库名')    drop database [数据库名] 2 判断表是否存在if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)    drop table [表名] 3 判断存储过程是否存在if ex

SQL Server 判断表中是否存在某字段

原文:SQL Server 判断表中是否存在某字段 功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].SYS.SYSCOLUMNS WHERE ID=OBJECT_ID([DATABASE].[SCHEMA].[TABLENAME]) AND NAME='COLUMN_NAME') ALTER TABLE [TABLENAME] ADD [COLUMN_NAME] [COLUMN_TYPE] p.s. 之前

SQL Server判断对象是否存在

1 判断数据库是否存在 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] 2 判断表是否存在 if exists (select * from sysobjects where id = object_id(N’[表名]’)

13 三种方式替换SQL Server中的NULL值(Different ways to replace NULL in Sql Server)

在Sql Server中有三种方式对查询结果中的NULL值进行替换. 如有下面的一张表: 我们可以通过自连接(Self-Join)的方式一张员工名和其对应的经理名的表: SELECT E.[Name],M.[Name] FROM [tblEmployee] AS E LEFT JOIN [tblEmployee] AS M ON E.ManagerId = M.EmployeeId 我们可以看到,Todd对应的Manger为NULL,这说明Todd应该是公司的最高层,他没有经理.但是这样显示很不

安装SQL Server出现未能将值CLSID写入项\Software\Classes\PROTOCOLS\Handler\ms-help的错误

在安装SQL Server会出现一个未能将值CLSID写入项\Software\Classes\PROTOCOLS\Handler\ms-help的错误. 解决方案: 运行输入Regedit 把HKEY_LOCAL_MACHINE\Software\Classes右键权限加上system用户并赋予完全控制权限,如图: 保存确定重新安装SQL就可以了.

Sql Server 判断字符串是否可以转数字

主要是在sql server的内置系统函数ISNUMERIC的基础上,将例外的“+”.“-”.“$”等进行也进行判断. CREATE FUNCTION [dbo].[fn_IsNumberic]( @str nvarchar(max))RETURNS intASBEGIN declare @res int set @res=case when ISNUMERIC(isnull(@str,0))=1 then case when PATINDEX('%[^0-9.]%',rtrim(ltrim(i