SQLServer函数:charindex()以及实际应用

文章讲述了在医药行业ERP系统切换过程中,如何通过SQL脚本检查客户提供的期初商品GSP类别是否符合门店经营范围,确保数据准确性,防止系统上线后销售限制问题。
摘要由CSDN通过智能技术生成

前言:医药行业ERP系统切换,客户软件升级,从旧系统切换到新系统,需要将旧系统的数据切换到新系统中;即在新系统中导入期初资料:供应商、客户(连锁门店)、门店库存、总部库存、会员等等期初资料;导入形式:将数据收集excel模版表格发送给客户,客户进行收集,然后进行SQLServer数据库的导入导出;

举例1    

可能遇到这样的场景:商品有一个GSP类别字段,门店有一个经营范围字段,如果商品的GSP类别不在门店的经营范围内,门店是不能够销售的;客户在提供期初商品、期初门店库存、期初门店资料时,可能会出现这样的情况:门店库存有这个商品,但是这个商品的GSP类别,不在门店的经营范围内(即客户提供的门店经营范围不准确或者说提供的商品资料中商品GSP类别不准确);

此时我们需要编写SQL脚本判断,客户提供的门店库存的商品,商品对应的GSP类别是否都在门店经营范围内,如果不在的话,需要告诉客户,否则系统上线之后,这些商品是不能够在门店进行销售的;

--查询商品的GSP类别
--'01'、'02'.........
SELECT GSPSORTID,* FROM YW_KCK;
--查询门店的经营范围
--'01,03,04,06,07,08,15,16,35,36,37,41,6801,6803'
SELECT BZ4,* FROM GL_CUSTOM;
--查询门店的库存
SELECT * FROM PHK;
--判断:门店库存商品的GSP类别是否都在门店的经营范围内,如果不在找出各个门店哪些商品不在门店的经营范围内
SELECT DISTINCT A.HH,B.GSPSortID,A.SUBBH,C.BZ4
FROM SUBPHK A
LEFT JOIN YW_KCK B ON A.HH = B.HH
LEFT JOIN (SELECT TJBH,BZ4 FROM GL_CUSTOM ) C ON A.SUBBH = C.TJBH
WHERE CHARINDEX(B.GSPSortID,C.BZ4)=0

charindex()               

在SQLServer中,charindex() 函数用于查找一个字符串在另一个字符串中的位置

函数的语法如下:

CHARINDEX(expression1, expression2, start_location)

其中:

  • expression1 是要查找的字符串。
  • expression2 是要在其中查找的字符串。
  • start_location 是可选的,表示要开始搜索的起始位置,默认为 1。

charindex()函数:返回一个整数值,表示要查找的字符串在目标字符串中的位置(从1开始),如果找不到,则返回0

--注意事项:
--CHARINDEX()函数默认对大小写不敏感
SELECT CHARINDEX('A','a')--1
--如果你需要进行大小写敏感的查找,你可以使用 COLLATE 子句来指定区分大小写的排序规则
--使用 COLLATE Latin1_General_CS_AS 指定了区分大小写的排序规则,CHARINDEX() 函数将对大小写敏感进行查找
SELECT CHARINDEX('A','a' COLLATE Latin1_General_CS_AS)--0
SELECT CHARINDEX('hello', 'Hello World' COLLATE Latin1_General_CS_AS)--0

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SQL Server的CHARINDEX函数是用来查找一个字符串中某个子字符串的位置的函数。它的语法如下: CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] ) 其中,expressionToFind是要查找的子字符串,expressionToSearch是要在其中查找的字符串,start_location是可选的,表示从哪个位置开始查找。如果找到了子字符串,则返回它在字符串中的位置,否则返回。 ### 回答2: SQL Server中的CHARINDEX函数是字符串函数之一。该函数返回字符串中要查找的字符或子字符串的位置,如果未找到,则返回零。 CHARINDEX函数的语法如下: CHARINDEX(要查找的字符串, 被查找的字符串, 开始查找的位置) 其中,第一个参数是要查找的字符串,第二个参数是被查找的字符串,第三个参数是可选的,表示从被查找的字符串的哪个位置开始查找。 CHARINDEX函数返回的是要查找的字符串在被查找的字符串中的起始位置。如果要查找的字符串在被查找的字符串中出现多次,则返回第一次出现的位置。 以下是使用CHARINDEX函数的示例: -- 查找字符串中的子字符串 SELECT CHARINDEX('world', 'hello world') -- 返回7 -- 查找子字符串在字符串中的位置 SELECT CHARINDEX('o', 'hello world', 5) -- 返回7 -- 如果未找到,则返回0 SELECT CHARINDEX('abc', 'hello world') -- 返回0 CHARINDEX函数可以被用于许多情况。例如,可以在数据库中使用它来查找表格中的某些特定字符或子字符串。此外,由于该函数的功能较强大,还可以在编写存储过程中使用它来检查特定字符串的存在并执行相应的操作。 总之,CHARINDEX函数是SQL Server中的一个非常有用的函数,可以帮助开发人员在大多数情况下轻松地查找和处理特定字符串。 ### 回答3: SQL Server的CharIndex函数用于返回指定字符串在源字符串中的位置。如果查找到指定字符串,则返回该字符串的第一个字符在源字符串中的位置。如果未找到,则返回0。以下是CharIndex函数的语法: CHARINDEX(searchString, sourceString, startPosition) 参数说明: - searchString:要查找的字符串。 - sourceString:要查找的源字符串。 - startPosition:指定从源字符串的哪个位置开始查找。可选参数,默认值为1。 示例: SELECT CHARINDEX('o', 'hello world') -- 返回值为 5 以上示例中,CharIndex从“hello world”中查找第一个出现“o”的位置,返回5。 使用CharIndex函数时,需要注意以下几点: - CharIndex区分大小写。如果要忽略大小写,可以使用Upper或Lower函数将源字符串和待查找字符串转换为大写或小写。 - 查找到的位置是指从左到右的第几个字符。如果要从右到左进行查找,可以使用PATINDEX函数。 - 如果使用CharIndex函数查找多个字符串的位置,需要多次调用该函数。 总的来说,CharIndex函数是SQL Server中一个非常有用的字符串函数,可以方便地进行字符串位置的查找和处理。在实际应用中,可以使用它来解析数据、替换字符串等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值