sql - 如何在 SQL 中进行子字符串计算?
问题描述
我正在处理一张满是客户在线订单的桌子。每个订单都有一个公司代码,可以是“09”、“07”、“04”、“03”和“01”。每个订单都有一个类似于“90180628”的订单号。您可以通过订单号的第一个数字来判断订单来自哪家公司。因此该订单是针对公司 09 的,而此“31610629”将是公司“03”的订单号
在我访问一个直接知道每个订单来自哪个公司的表之前,我的 WHERE 子句看起来像这样。
WHERE
(O.Company_Code = @CompanyCode OR @CompanyCode IS NULL) AND
(O.Division_Code = @DivisionCode OR @DivisionCode IS NULL) AND
o.Customer_Number = 'ecom2x' AND
o.Customer_Purchase_Order_Number not like '%bulk%' AND
o.DateRecordModified BETWEEN @FromDate AND DATEADD(dayofyear, 1, @ToDate)
其中@CompanyCode 是用户选择的参数(因为这是一份报告)等等。
但是,现在我使用的是不同的表,并且无法访问 O.Company_Code,因此我必须根据订单号检查公司代码。
所以它会是这样的
Where SH.Packslip like 'substring(@CompanyCode,2,1)%'
那是不起作用的伪代码,但这就是想法。有谁知道如何把它变成功能代码?也许我必须分两部分进行,第一部分我声明一个新变量并将其设置为等于第二个字符子字符串,然后我检查 packslip 是否以该新变量开头(因为我需要摆脱 0 09)
解决方案
你可以试试这个。
Where SH.Packslip like substring(@CompanyCode,2,1) + '%'
推荐阅读
- javascript - 获取本地存储中的所有项目
- r - 用 ggplot2 绘制比例频率但遗漏了某些类别的数据
- matrix - 来自 Matrix 3x3 的字母 - 搜索算法
- mysql - 西班牙文、法文、中文和俄文的 MySQL 排序规则
- mapbox - 在数据集编辑器中绘制行驶路线
- python - 在同一数据框中迭代地比较列值
- twitter-bootstrap - 事件监听器 hide.bs.dropdown 未在引导程序 5 中触发
- vue.js - 当我更改 Axios 参数时,前端:8080 提交到后端:80 中断
- d3.js - 结合数据获取和数组迭代
- asp.net-core - OpenXML MainDocumentPart.Document.Save() 似乎没有保存在 .Net 5 Core