当前位置: 首页 > 面试题库 >

通常,是否将字符串(或varchar)字段用作联接字段?

彭俊智
2023-03-14
问题内容

我们有两个表。第一个包含名称(varchar)字段。第二个包含一个字段,该字段引用第一个表中的名称字段。对于与该名称关联的每一行,将重复第二个表中的此外键。通常不建议使用varchar
/ string字段作为两个表之间的联接吗?何时可以将字符串字段用作联接字段?


问题答案:

当然可以使用varchar作为键字段(或简单地将其连接)。它的主要问题取决于您通常在varchar字段中存储的内容。可变数据。严格来说,不建议更改关键字段。一个人的姓名,电话号码,甚至他们的SSN都可以更改。但是,即使有两个John
Smiths,内部ID为3的员工也始终为ID 3。

其次,字符串比较取决于许多挑剔的细节,例如区域性,排序规则,空格翻译等,这些细节可以在没有明显原因的情况下中断连接。假设您对要加入的某个字符串使用制表符\
t。后来,您更改软件以将\
t替换为3个空格,以减少原始字符串中的字符转义符。现在,您已经破坏了所有需要将带有转义的制表符的字符串与外观相同但组成不同的字符串进行匹配的功能。

最后,即使给出两个完全相同的字符串,比较两个整数也比比较两个字符串有一点性能上的好处。整数比较实际上是恒定时间。根据字符串的长度,字符串比较充其量是线性的。



 类似资料:
  • 我正在寻找一个运算符,它允许我检查字段的值是否包含某个字符串。 比如: 可能吗?

  • 本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果

  • 问题内容: 我正在使用ColdFusion 8和SQL Server 2008 R2。 我试图查询一列值以获取具有范围内的值的行。该列应为数字,但不是。它被设置为varchar(由其他人)。有100,000多行数据。这是数据的伪样本: 我的查询如下所示: 该查询不会运行,因为where语句的列是varchar,并且出现转换错误,因此我必须将where语句更改为此: 现在,当我运行这样的查询时,它会

  • 问题内容: 我有一张这样的桌子: 我试图弄清楚如何返回在每个DESCRIPTION中出现一个字符串的次数。 因此,如果我想计算“值”出现的次数,则sql语句将返回以下内容: 有什么办法吗?我根本不想使用php,而只是mysql。 问题答案: 这应该可以解决问题:

  • 我有一张这样的桌子: 我试图找出如何返回字符串在每个描述中出现的次数。 因此,如果我想计算value出现的次数,sql语句将返回以下内容: 有没有办法做到这一点?我根本不想使用php,只想使用mysql。