我希望这不会重复。我已经检查了搜索,但似乎找不到明确的答案。
我有一个表,其主键设置为UniqueIdentifier
。我还有另一个表,该表的varchar
列基本上包含一个带有查询字符串的url,该查询字符串包含我第一个表中的guid。
所以我的2张桌子就像:
状态表
StateID StateName
EB06F84C-15B9-4397-98AD-4A63DA2A238E Active
网址表
URL
page.aspx?id=EB06F84C-15B9-4397-98AD-4A63DA2A238E
我想做的是连接在一起,URLTable
然后在URL表的URL中包含StateTable
on的值StateID
。我还没有真正弄清楚这个加入。我什至尝试只选择一个表并尝试按中的值进行过滤StateTable
。我试图做这样的事情:
SELECT *
FROM URLTable
WHERE EXISTS
(SELECT *
FROM StateTable
WHERE URL LIKE '%' + StateID + '%')
即使这样也不起作用,因为它说我正在比较uniqueidentifier
和varchar
。
有什么方法可以使用like命令连接2个表,而like命令没有比较2个不兼容的变量?
谢谢!!
更新:让我添加一些我应该提到的其他内容。该查询用于构建分析报告。表格是CMS分析软件包的一部分…因此,更新或更改表格结构不是一种选择。
其次,由于这些表正在捕获站点分析,因此流量非常大……因此性能非常成问题。第三件事是,在我的示例中,我说了id
=,但可能有多个值,例如id=guid&user=guid&date=date
。
更新2:我刚刚意识到的另一件事是,有时查询字符串中的破折号已从GUID中删除。.有时没有。.因此,除非我弄错了,否则我不能将子字符串转换为Uniqueidentifier
。任何人都可以。确认吗?
叹息 。我确实使用它来工作
REPLACE('-','',CONVERT(varchar(50), a.AutomationStateId))
但由于URL的表非常大,现在我非常担心与此相关的性能问题。不过,这可能是野兽的天性,除非我无能为力。
将StateID强制转换为兼容类型,例如
WHERE URL LIKE '%' + CONVERT(varchar(50), StateID) + '%'
或者
WHERE URL LIKE N'%' + CONVERT(nvarchar(50), StateID) + N'%'
如果URL是nvarchar(…)
编辑
正如另一个答案中指出的那样,这可能会导致大型表的性能下降。将LIKE与CONVERT结合使用将进行表扫描。对于小型表来说,这可能不是问题,但如果性能出现问题,则应考虑将URL分为两列。一列将包含“
page.aspx?id =”,另一列将包含UNIQUEIDENTIFIER。这样,您的查询就可以更加轻松地优化。
问题内容: 我有一个在MySQL中运行良好的查询,但是在Oracle上运行该查询时,出现以下错误: SQL错误:ORA-00933:SQL命令未正确终止 00933。00000-“ SQL命令未正确终止” 查询是: 问题答案: 该语法在Oracle中无效。你可以这样做: 或者您 可以 执行以下操作: 它取决于内联视图是否被Oracle更新( 要更新第二条语句取决于 此处 列出的一些规则 )。
问题内容: 我目前正在制作一份报告,向我显示我们销售团队涵盖的所有邮政编码。 每个团队涵盖100多个邮政编码。我想做的是创建一个报告,将邮政编码内的客户带回去。目前,我的代码如下所示。 我希望的是有一种更快,更轻松的方式来做到这一点。任何建议将不胜感激。有没有一种方法可以为每个销售团队创建变量,例如 只是在钓鱼的想法。干杯 问题答案:
问题内容: 问题 表格1: 表2: 表3: 给定键(A1或A2),我需要使用表2中的相应值更新表1中的DataColumn1和DataColumn2列。 因此,table1可以更新x个行,如上面的数据所示。如果我要更新A1,则01和02行都应更新 (因此,表01中的值对于键01和键02的datacolumn1分别为0.15和1.2(对于datacolumn2)) 到目前为止我尝试过的是: 问题:
问题内容: 首先,我正在使用Oracle: 表一名称= 表二名称= 有一个名为的列,有一个名为的列。我想加入到其中,是在某个地方的名字。 我试过的 如何更正此查询? 问题答案: 尝试使用以下语法: Oracle的字符串连接运算符是双管道(||)。无效数字错误是因为Oracle需要’+’运算符的数字操作数。
问题内容: 我不知道是什么问题。使用MySQL 5.0尝试运行以下MYSQL更新语句时出现编译错误 所有字段名称都是正确的。有什么想法吗? 问题答案: 尝试这个: 更新: 既然您说查询产生了语法错误,所以我创建了一些可以对其进行测试的表,并确认查询中没有语法错误: 看到?没有语法错误。我针对MySQL 5.5.8进行了测试。
是否有可能基于“if”“like”语句或xslt中的等价物写出xml? 我有一个名为“cust_code”的元素,如果该元素以“HE”开头,那么我想把它写出来,否则跳到下一个。 可能吗?