Geo*_*Geo 4 t-sql sql-server join
我在这里有点停滞不前.我有一个简单的左外连接到一个返回ID的表.
我的代码是
Select distinct TenantID
,Name
,Name2
,TenantNumber
,Cashname
From Tenants
LEFT OUTER JOIN tCash
on TenantNumber = CashNumber
and tMoney.CashName = Tenants.Name2
Run Code Online (Sandbox Code Playgroud)
我的结果集如下:
**TenantID | Name | Name2 | TenantNo | CashName**
100 |MyShop | John's shop | 12345 |John's shop
999 |MyShop | John's Shop | 12345 |John's shop
Run Code Online (Sandbox Code Playgroud)
我的问题: 出于所有意图和目的,"约翰的商店"与"约翰的商店"不同 - 我正在加入我的钱桌上TenantNo然后是Name2,但名字2与Case不同.
问题:有没有办法根据区分大小写来区分联接?我不想使用UPPER
或LOWER
因为它会破坏报告的情况.
谢谢!
在下面添加表信息,请假设所有列都被修剪为空格.
tMoney
CashNumnbr | CashName
102504 Bill's Place
102374 Tom's Shop
12345 John's Shop
12345 John's shop
Run Code Online (Sandbox Code Playgroud)
租户
TenantID | Name | Name2 |TenantNumber
1 |MyShop | John's Shop | 12345
2 |MyShop | John's shop | 12345
3 |Shoppee | Bill's Place | 102504
4 | Shop2 | Toms Shop | 102374
Run Code Online (Sandbox Code Playgroud)
由于我想加入以获得AR报告的正确TenantID,我想确保我总是引入正确的租户.如果情况不同,我能写些什么来区分像John's Shop这样的情况吗?
Mar*_*ith 15
问题是,在你的结果的第二行中,"John's S hop"不应该匹配"John's s hop"?
您可以使用区分大小写的排序规则.
这可能最好通过更改所涉及的列的排序规则以允许索引使用来实现,但您也可以在运行时使用如下的显式COLLATE
子句来完成此操作.
SELECT DISTINCT TenantID,
Name,
Name2,
TenantNumber,
Cashname
FROM Tenants
LEFT OUTER JOIN tCash
ON TenantNumber = CashNumber
AND tMoney.CashName = Tenants.Name2 COLLATE Latin1_General_100_CS_AS
Run Code Online (Sandbox Code Playgroud)
关于加入id而不是名称的评论可能是正确的,并且根本不需要这样做.
归档时间: |
|
查看次数: |
5640 次 |
最近记录: |