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

在临时表列TSQL中设置排序规则的正确方法

林星阑
2023-03-14
问题内容

我有一个临时表,该表使用批量插入来插入数据。但是,当我想将数据从临时表更新到普通表时,它会产生排序规则问题。我知道如何使用类似的方法来解决此问题:

UPDATE RegularTable
SET r.Column1 = t.ColumnA
FROM RegularTable r INNER JOIN #TEMP t ON
r.Column1 COLLATE DATABASE_DEFAULT = 
t.ColumnA COLLATE DATABASE_DEFAULT

但是,有没有一种方法可以立即在临时表中设置排序规则,因此您不必在联接中使用排序规则?就像是:

CREATE TABLE #TEMP
Column1 varchar(255) COLLATE database_default,
Column2 varchar(60)

这是正确的编码吗,您是否必须对每个表或每个列设置一次排序规则?而且,如果在表中设置了排序规则,那么您可以从联接中排除该排序规则吗?


问题答案:

您可以使用COLLATE database_default描述的语法在临时表定义中使用,这将使每一列的排序规则与数据库兼容。

您必须按列显式设置它。没有表级别的默认排序规则。有一个数据库级别的默认排序规则,但这tempdb始终等于model数据库的默认排序规则,默认情况下为服务器排序规则。

如果您在表列上设置了排序规则,您仍然可以像以前一样在查询中覆盖它。



 类似资料:
  • 我正在使用外部数据库(只读)与本地数据库(测试系统)。 所以每次从外部数据库获取数据时,我都会得到如下异常警告,默认为空字符,如“”。 character_set_connection=latin1 character_set_database=utf8 character_set_filesystem=二进制 character_set_results=latin1 character_set_

  • 问题内容: 我使用Hibernate MySQLInnoDB方言生成DDL。 hibernate.cfg.xml: 如何为生成的表将字符集/排序规则配置为’utf8_general_ci’? 问题答案: 我之前有相同的要求,并使用了这篇文章,其中提供了详细的解决方案。您需要 继承MySQLInnoDBDialect的 子类,并重写 getTableTypeString 方法。本文中的更多内容。

  • 我有一个Java,它被转换成,这样就可以用以下样式查看它: i、 e 现在的问题是,当我对日期列进行排序时,日期并没有按应有的顺序进行排序。 当前行为:预期行为: 我知道这是因为排序是基于字符串发生的。 我的问题是:有没有办法保留我想要显示日期的格式,并且仍然能够将它们作为日期排序?我可以把它们转换成字符串以外的任何形式吗? 请注意,我无法编辑排序机制。我唯一的选择是为专栏提供一个合适的日期格式。

  • 我正在尝试写入优先级队列。对于我的排队方法,我的逻辑是: 如果列表为空,则将事务添加到链接列表中的第一个节点 如果列表不为空,请将列表中事务对象的时间值与当前对象进行比较,如果对象的时间大于链表中的对象,则将对象插入当前索引。 否则,只需将它们添加到linkedlist的最后一个元素 我通过在方法中输入4个值来测试此方法,并相应地输入200020003000。 当我尝试从列表中除名时,它给我一个空

  • 我试图弄清楚如何使用tidyverse来动态排列数据帧。我以前用arrange_但是现在不推荐用了。 一些更详细的细节。我需要安排数字,如果不是,则升序。我有内置的逻辑,但我不知道如何让它与安排一起工作。 一些数据: 某些代码: 有人有使用tidyverse的解决方案吗? 谢谢

  • 问题内容: 如何查看表具有的排序规则?IE浏览器,我想看: 问题答案: 显示有关表的信息,包括排序规则。 例如