利用表变量和spt_values表来比较两个字串是否相等_gee专用变量.spt-程序员宅基地

技术标签: null  测试  function  insert  SQL Server  table  object  

      今天在论坛上看到有一位C友提问,如何判断两组字符串是否相等的问题,刚好把手头的工作忙完,就写了一个函数,测试了一下,感觉没什么问题,大家也可以测试一下,有问题请留言给我。

      先看表结构和测试数据: 

if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([col1] varchar(9),[col2] varchar(9))
insert [tb]
select 'LGALGDLGU','LGALGDLGU' union all
select 'LGALGDLGU','LGALGULGD' union all
select 'LGALGDLGU','LGDLGALGU' union all
select 'LGALGDLGU','LGDLGULGA' union all
select 'LGALGDLGU','LGULAGLGD' union all
select 'LGALGDLGU','LGULGDLGA'
go
 

     数据中不管顺序,只要字符排序后是一样的,就认为是相等的,所以我们不能使用字符函数直接来比较,我的思路大概就是把每个字串放到一个表中,但由于有些字符在串中有重复,所以还得统计他们的个数,所以如果两个字符串相等,最少得满足两个条件:1、两个字符串的不同的字符个数要相等;2、每个字符出现的个数要相等。

    以下是我写的函数: 

create function str_def(@s1 varchar(100),@s2 varchar(100))
returns int
as
begin
  declare @result int
  declare @t1 table(col char(1))
  declare @t2 table(col char(1))
  insert @t1
  select substring(@s1,number,1)
  from master..spt_values
  where type='P' and number between 1 and len(@s1)
  insert @t2
  select substring(@s2,number,1)
  from master..spt_values
  where type='P' and number between 1 and len(@s2)
  if not exists
  (
    select 1
    from (select col,count(1) as cnt from @t1 group by col) a
    where not exists
    (
      select 1
      from (select col,count(1) as cnt from @t2 group by col) b
      where a.col=b.col and a.cnt=b.cnt
    )
  )
    set @result=1
  else
    set @result=0
  return @result
end
go
 
-->查询
select *,dbo.str_def(col1,col2) AS RESULT  from tb
-->测试结果:
/*
col1      col2      RESULT
--------- --------- -----------
LGALGDLGU LGALGDLGU 1
LGALGDLGU LGALGULGD 1
LGALGDLGU LGDLGALGU 1
LGALGDLGU LGDLGULGA 1
LGALGDLGU LGULAGLGD 1
LGALGDLGU LGULGDLGA 1

(6 行受影响)

*/

drop function str_def

    如有不妥之处,欢迎各位大侠指正,不胜感激。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sgtzzc/article/details/4676777

智能推荐

PHPCMS中GET标签概述、 get 标签语法、get 标签创建工具、get 调用本系统示例、get 调用其他系统示例_phpcms get 标签-程序员宅基地

文章浏览阅读8k次。一、get 标签概述 通俗来讲,get 标签是Phpcms定义的能直接调用数据库里面内容的简单化、友好化代码,她可调用本系统和外部数据,只有你对SQL有一定的了解,她就是你的绝世好剑!也就是适合熟悉SQL语句的人使用。有了她,我们打造个性化的网站,能非常方便的调用出数据库里面指定的内容。通过条件限制,我们可以调用出不同条件下的不同数据。二、get标签样式{get d_phpcms get 标签

在 Xposed 模块下优雅的调用宿主——对象篇_xposed 宿主加载模块类-程序员宅基地

文章浏览阅读396次,点赞8次,收藏8次。通过之前中我们已经知道,Xposed 模块是无法直接在项目里添加Stub包,然后直接使用宿主的类对象。所以这篇文章的想法就是怎么在这环境下能直接使用Stub包下的类对象。_xposed 宿主加载模块类

java毕业设计基于SpringBoot + Vue 的超市商超进销存收银系统-程序员宅基地

文章浏览阅读480次,点赞9次,收藏8次。本基于SpringBoot和Vue 的超市进销存系统采用Java语言来进行开发,从角色上分为管理员和员工以及用户三个角色,管理员部分功能主要包括首页,个人中心,基础数据管理,供应商信息管理,商品管理,出入库管理,收银管理,用户管理等功能;本基于SpringBoot和Vue 的超市进销存系统是根据当前我国中小型超市环境相关的内容实际情况开发的,在系统语言选择上我们使用的Java语言,数据库是小巧灵活的MySQL数据库,本系统的开发可以极大的提高超市方面的管理。关键词:超市,管理,MySQL,Java。

AutoDl服务器模型训练方法_autodl实时查看sd模型训练步数-程序员宅基地

文章浏览阅读346次。4、pip requirements.txt 用pycharm或网站jyputer训练。开实例,打开AutoPanel的公共网盘进行授权->3、网盘下载到实例 (可以不用压缩包,直接传文件)1、数据文件先传到百度网盘/阿里云盘。5、训练完的数据上传到网盘。_autodl实时查看sd模型训练步数

新建vue2.0项目_新建vue2项目,定义data和methods,使页面输出-程序员宅基地

文章浏览阅读897次。vue入门下载安装node环境安装网址:https://nodejs.org/en/ 检查安装,输出版本号则安装成功为了提高效率,可以使用淘宝镜像npm install -g cnpm -registry=https://registry.npm.taobao.org,输入即可安装npm 镜像 ,以后用到npm的地方就可以用cnpm来代替,搭建vue项目环境全局安装vue-clinpm install @vue/cli -g 使用vue -V查看版本..._新建vue2项目,定义data和methods,使页面输出

vue iframe嵌套外部网页_vue嵌套iframe外部页面-程序员宅基地

文章浏览阅读3.6k次。<template> <div> <iframe src="外部网页url" id="mobsf" frameborder="0" style="position:absolute;"></iframe> </div></template><script> export default { data () { return { } }, mounte_vue嵌套iframe外部页面

随便推点

MATLAB 曲线拟合_matlab曲线拟合-程序员宅基地

文章浏览阅读2.3w次,点赞19次,收藏145次。MATLAB 曲线拟合eg:x=1790:10:2010;y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,63.0,76.0,92.0,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7];plot(x,y,'*');p=polyfit(x,y,3);polyval(p,2020)plot(x,y,'*',x,polyval(p,x));polyval(p,2016)_matlab曲线拟合

[php]运用变量引用实现一维数组转多维树状数组-程序员宅基地

文章浏览阅读103次。/** * 运用 变量引用 实现 一维数组 转 多维树状数组 * @param $array * @param array $options = ['id'=>'id', 'pid'=>'pid', 'sub'=>'_sub', 'root'=>0] * @return array */public static fu..._php 一维数组通过引用组装树形数组

SpringSecurity OAuth2.0的学习(JWT令牌)_springsecurity oauth2.0 jwt-程序员宅基地

文章浏览阅读601次。SpringSecurity OAuth2.0的学习首先我们要知道 OAauth(开放授权)是一个开方标准,允许用户授权第三方应用访问他们的微服务应用.OAauth2 包括以下角色1. 客户端: 通常指 需要通过资源拥有者的授权请求资源服务器的资源,比如Android客户端,WEB端等2. 资源拥有者: 通常为用户也可以是应用程序,即该资源的拥有者3. 授权服务器: 用于服务商提供商对资源拥有的身份进行认证,对访问资源惊醒授权。但是授权服务器就允许随便一个客户端就介入到它的授权服务器吗,它会给_springsecurity oauth2.0 jwt

MATLAB正态分布拟合_matlab 正态分布曲线 拟合 pdf-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏34次。data = randn(10000,1);sampling = 50;figure[pdf_resi no] = histnorm(data, sampling, ‘plot’);%归一化之后的histset(gca,‘FontSize’,12,‘FontName’, ‘times new roman’);hold onpd = fitdist(data,‘normal’);x_values = linspace(min(data),max(data),sampling);y = pdf(_matlab 正态分布曲线 拟合 pdf

神木林服务器未能,梦幻西游:175神木林能打服战却酷爱单挑,堪称“单挑界霸主”!...-程序员宅基地

文章浏览阅读306次。Hello大家好,我是浩仔!关注浩仔,每天给你带来最新梦幻西游游戏资讯!说到梦幻西游中比较特别,沂水雪山绝对首当其冲,这个服务器聚集了大量175玩家,而且各个身怀绝技,甚至还形成了自己的擂台文化。各种擂台单挑王层出不穷,之前浩仔就给大家展示过单挑五庄观和单挑普陀山。而且沂水雪山的单挑非常精彩,每天都会有人打皇宫生死,随便去擂台下边逛逛,都会看到很多极品175玩家在展示装备。今天浩仔给大家带来的就是...