回答

收藏

在like语句上联接SQL Server表

技术问答 技术问答 345 人阅读 | 0 人回复 | 2023-09-14

我希望这不会重复。我检查了搜索,但似乎找不到明确的答案。
; @* o+ c. w! C/ S, o我有一个表,其主键设置为UniqueIdentifier。我还有另一个表,表varchar列基本上包含一个带有查询字符串的列url,查询字符串包含在我的第一个表中guid。7 P; f( R3 i" y
所以我的两张桌子就像:- X* [6 F; R' q) P* \, }7 H
状态表
' L, }( c9 O/ \$ Q) Z0 EStateID                                  StateNameEB06F84C-15B9-4397-98AD-4A63DA2A238E     Active网址表
* B0 X% v0 s( ?! k& F$ p3 m! mURLpage.aspx?id=EB06F84C-15B9-4397-98AD-4A63DA2A238E我想做的是连接在一起,URLTable然后在URL表的URL中包含StateTableon的值StateID。我还没有真正弄清楚这个加入。我甚至试图只选择一个表,并试图按中值过滤它StateTable。我试图做这样的事情:) K! y" T: Q5 {8 \- b
SELECT  *FROM URLTableWHERE     EXISTS    (SELECT  *     FROM  StateTable     WHERE URL LIKE '%'   StateID  即便如此,也不起作用,因为它说我在比较uniqueidentifier和varchar。5 w, [; F! g: [$ F. |, }
用什么方法?like命令连接两个表,而like命令中没有两个不兼容的变量?- i6 L' _+ Z. |# L6 S) `  U9 e, |
谢谢!!$ ?' \& ]  r/ d* x
更新:让我添加一些我应该提到的其他内容。构建分析报告的查询。CMS分析软件包的一部分…因此,更新或更改表格结构不是一种选择。6 C  k  y" e  b! A" w
其次,由于这些表正在捕获网站分析,流量非常大……所以性能很有问题。第三件事是,在我的例子中,我说了id  x9 R% a* U  G) i, Q
=,但是可能有多个值,比如id=guid&user=guid&date=date。
7 M" Q6 A  r+ W' j更新2:我刚刚意识到的另一件事是,有时查询字符串中的破折号已经从字符串开始了GUID中删除。.有时没有。.所以,除非我犯了错误,否则我不能把子字符串转换成Uniqueidentifier。任何人都可以。确认吗?
- Y5 U' u. N( e; N0 Y* e叹息    。我真的用它来工作。
' e- W$ L( S- I9 o' l  q7 UREPLACE('-','',CONVERT(varchar(50),a.AutomationStateId))但由于URL手表很大,现在我很担心这个相关的性能问题。但这可能是野兽的天性,除非我无能为力。4 `, H3 o7 H/ G( U" t2 @! X
                                                               
$ l" a; M# z5 @5 R! v    解决方案:                                                               
3 @5 ?5 `8 _! v& F1 ~& b! w6 e                                                                将StateID强制转换为兼容类型,如
" _5 |% n& i, I" W( F# tWHERE URL LIKE    CONVERT(varchar(50),StateID) 或者
; h1 n# K9 z' D3 U- G# e: l# DWHERE URL LIKE N  CONVERT(nvarchar(50),StateID)   N'%'如果URL是nvarchar(…)
7 V, F& D' K* G' Y8 b; d编辑' q& j$ B% D- ^& E
正如另一个答案所指出的,这可能会导致大表的性能下降。LIKE与CONVERT结合使用与使用相结合。不是小表的问题,但如果性能有问题,应该考虑URL分为两列。一列将包括
2 l# d+ B7 h! Dpage.aspx?id =另一列将包含UNIQUEIDENTIFIER。这样,您的查询就可以更容易地优化。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则