- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表Backup
和Requests
。
下面是两个表的脚本
备份
CREATE TABLE UserBackup(
FileName varchar(70) NOT NULL,
)
文件名由 guid 表示。有时会有一些与文件相关的附加信息。因此,我们在表中输入了类似 guid_ADD 的条目。
请求
CREATE TABLE Requests(
RequestId UNIQUEIDENTIFIER NOT NULL,
Status int Not null
)
以下是一些示例行:
UserBackup 表:
FileName
15b993cc-e8be-405d-bb9f-0c58b66dcdfe
4cffe724-3f68-4710-b785-30afde5d52f8
4cffe724-3f68-4710-b785-30afde5d52f8_Add
7ad22838-ddee-4043-8d1f-6656d2953545
请求表:
RequestId Status
15b993cc-e8be-405d-bb9f-0c58b66dcdfe 1
4cffe724-3f68-4710-b785-30afde5d52f8 1
7ad22838-ddee-4043-8d1f-6656d2953545 2
我需要从 userbackup 表中返回所有行,这些行的名称(guid)与 Requests
表中的 RequestId
匹配且状态为 1。所以在这里是我写的查询
Select *
from UserBackup
inner join Requests on UserBackup.FileName = Requests.RequestId
where Requests.Status = 1
这很好用。它返回以下结果
FileName RequestId Status
15b993cc-e8be-405d-bb9f-0c58b66dcdfe 15b993cc-e8be-405d-bb9f-0c58b66dcdfe 1
4cffe724-3f68-4710-b785-30afde5d52f8 4cffe724-3f68-4710-b785-30afde5d52f8 1
4cffe724-3f68-4710-b785-30afde5d52f8_Add 4cffe724-3f68-4710-b785-30afde5d52f8 1
这正是我想要的。但我不明白的是它是如何工作的。如果您注意到结果也返回 4cffe724-3f68-4710-b785-30afde5d52f8_Add
行。内部联接在 varchar
和 uniqueidentifier
上,此联接不像“等于”比较那样工作,而是像“包含”比较那样工作。我想知道这是如何工作的,以便我可以确保在没有任何意外情况的情况下使用此代码。
最佳答案
比较两边的值必须是相同数据类型。没有诸如比较 uniqueidentifier
和 varchar
这样的事情。
uniqueidentifier
有一个higher precedence比varchar
因此 varchar
将在比较发生之前转换为 uniqueidentifier
。
不幸的是,如果字符串包含的字符多于需要的字符,您不会收到任何错误或警告:
select CONVERT(uniqueidentifier,'4cffe724-3f68-4710-b785-30afde5d52f8_Add')
结果:
4CFFE724-3F68-4710-B785-30AFDE5D52F8
如果你想强制在字符串之间进行比较,你必须执行显式转换:
Select *
from UserBackup
inner join Requests
on UserBackup.FileName = CONVERT(varchar(70),Requests.RequestId)
where Requests.Status = 1
关于SQL 服务器 : join on uniqueidentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841229/
假设您有一个提供一些在线类(class)的付费网站。并且您要确保一个人不只是购买访问权限,然后将用户名和密码提供给他的所有 friend ,这样他们就可以免费参加类(class)。 你会怎么做? 到目
我有多个数据库,每个数据库都有一个审计表。其中一个数据库是一个“通用”数据库,其中包含国家、州等表格。 这个公共(public)数据库的表在其他数据库中作为 View 被引用。 目前我的审计表有一个标
我正在编写一个 Entity Framework LINQ 查询,其中我想将字符串解析为 UNIQUEIDENTIFIER(又名 GUID),作为 WHERE 子句的一部分: public IEnum
我刚开始使用 SQL Server,但在向具有 uniqueidentifier 类型列的表添加值时遇到了一些麻烦。 表格包括: ID (uniqueidentifier), CODE (nchar(
我有多个数据库,每个数据库都有一个审计表。其中一个数据库是一个“通用”数据库,其中包含国家、州等表格。 这个公共(public)数据库的表在其他数据库中作为 View 被引用。 目前我的审计表有一个标
我有两个表Backup 和Requests。 下面是两个表的脚本 备份 CREATE TABLE UserBackup( FileName varchar(70) NOT NUL
当我运行我的最终查询时,我收到了上述错误。我已经正确设置了我的表格格式,如果我运行我的 @ProdTotal单独查询我得到正确的数据,如果我运行最终 @Sales_Prod查询不带 pt.Produc
为了调查 Hibernate 的行为是否不同于 NHibernate 的 for a particular usage scenario , 我开始为基于 NHibernate 的应用程序的相关部分编
我想根据他们在我网站上的电子邮件 ID 来注册用户,假设用户和他们的 emailid 字符串之间存在一对一的关系。但是gmail doesn't recongnize . s in email ids
在我的数据库 SQL Express 2014 中, 我有名为 Membership 的表,其中列名为 UserId。列类型为 uniqueidentifier。 我想将 UserId 列的内容转换为
我有一个动态查询,我想在其中连接 uniqueidentifier,但 + 和 & 运算符不支持此操作,有没有办法可以将 uniqueidentifier 连接到动态字符串。在这方面的任何示例或任何帮
我正在尝试比较 WHERE 子句中的列 col1 和变量 @myvar。两者通常都包含 GUID,但也可能包含 NULL 值。我认为我可以通过使用 WHERE ISNULL(col1, '')=ISN
我创建了一个数据库,其中使用 uniqueidentifier 作为主键。我正在尝试运行一个最终看起来像这样的参数化查询。 (insert into someTable (uniqueID) Valu
我在 Web 和移动平台(iOS 和 Android)上有一个应用程序,我试图从用户登录的设备中识别出来,并出于安全目的保留它们的列表。是否有任何设备的通用 ID,例如用于计算机的 IMEI(手机),
在我的 C# 项目中,我需要向 UniqueIdentifier 列插入一些空值。 对于字段 city Guid,state Guid 字段我应该能够插入空值如果没有可用的值(唯一标识符)。我收到以下
这个问题在这里已经有了答案: UIDevice uniqueIdentifier deprecated - What to do now? (32 个回答) 已关闭10 年前。
我经常被告知要忽略这个编译器警告,因为在发布下一个 iOS 主要版本之前它不会成为问题。好吧……如果我的 iPhone 应用程序没有有一天突然停止工作就好了! 奇怪的是我在 OpenGL 2.0 上使
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve
我正在尝试使用以下代码将 uniqueidentifier 参数传递给存储过程: myCommand.Parameters.Add("@BlogID", SqlDbType.UniqueIdentif
这个问题在这里已经有了答案: How to check if a string is a uniqueidentifier? (15 个答案) 关闭 6 年前。 我有一个 SQL Server 表,
我是一名优秀的程序员,十分优秀!