前言:医药行业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