tsql - 如何编写该 tsql 请求(转换问题)?
问题描述
我有 2 张桌子:
表合约:
IdContract | Department | IdCompany
-----------------------------------------------------
154 | 6 | /1150/1420/879/
和表公司:
IdCompany | WorkingIdDepartment
-------------------------------------
1150 | /17/8/26/
出于某种原因,一些公司被错误地分配到了某些合同:他们与部门 6 签订合同,但他们只在部门 17、8 和 26 工作。我需要找到那些公司。
我尝试以这种方式请求我的数据库:
SELECT *
FROM tbl_contract ct, tbl_compagny cp
WHERE ct.IdCompany like CONCAT('%/1150/%')
AND ct.Department NOT IN (17,8,26)
或以动态方式:
SELECT *
FROM tbl_contract ct, tbl_compagny cp
WHERE ct.IdCompany like CONCAT('%/' , cp.IdCompany , '/%')
AND ct.Department NOT IN (Right(Left(Replace(WorkingIdDepartment, '/', ','), len(Replace(WorkingIdDepartment, '/', ',')) - 1), len(Left(Replace(WorkingIdDepartment, '/', ','), len(Replace(WorkingIdDepartment, '/', ',')) - 1))-1))
但我的错误是我的请求的最后一部分给我一个字符串:'17,8,26' 而不是几个用逗号分隔的 Int...所以我得到转换错误(我不在这里复制/粘贴我的错误,因为它是法语)
请问我怎样才能达到我的要求?
谢谢你的帮助 !
解决方案
解决方案是:
SELECT *
FROM tbl_contract ct, tbl_compagny cp
WHERE ct.IdCompany like CONCAT('%/' , cp.IdCompany , '/%')
AND ct.Department NOT IN (SELECT value from STRING_SPLIT(WorkingIdDepartment, '/'))
它非常“消耗性能”,但它适用于我的数据库设计不佳
推荐阅读
- postgresql - Postgres 索引未使用正确的计划
- c - ASCII 字符 14(和其他)在 C 中的字符串中分配时
- php - 多个测试环境正在处理 Stripe Payment Intent 事件
- docker - .NET Core 3.0 - 自定义 docker url 被忽略
- android - Kotlin 中的 Android 开发,被教程弄糊涂了
- python - Python模块xhtml2pdf - 页脚之外的页数
- javascript - 如何增加语义 UI 中单个选项的高度?
- python - 无法在 for 循环中获取先前的值而不会将其全部搞砸
- python - linux crontab 使用谷歌 api 驱动器失败
- chart.js - 我可以删除 chart.js 上的 Y 轴计数器吗?