【发布时间】:2020-01-15 16:54:31
【问题描述】:
默认情况下,MySQL 在从字符串中正确修剪空格后返回 char 字段。 然而,这不是 ANSII 标准所期望的行为。另一方面,SQL Server 按原样返回空格(正如标准所期望的那样)。
在 MySQL 中,要更改它,我们可以通过以下方式之一将变量 sql_mode 设置为包含 PAD_CHAR_TO_FULL_LENGTH:
仅适用于当前会话:
SET SESSION sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'
或全局:
SET SESSION sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'
问题是:SQL Server 是否有任何等效的设置来改变行为,因此它会正确修剪任何 char 类型的空格(尽管它不是 ANSII 标准) - 所以它的行为会像 MySQL?
【问题讨论】:
-
看看 CHAR 与 VARCHAR。 CHAR 将有尾随空格 Select Len5 = convert(char(5),'aaa'),Len3=convert(varchar(5),'aaa')
-
谢谢。我知道这些类型之间的区别。我在询问全局更改 SQL Server 中 char(n) 字段的检索行为,以便它模仿 My SQL 的行为。
-
不,你不能在 sql server 中做到这一点。我会说明您无论如何都不想这样做,因为这实际上会在您检索数据时更改数据,这可能会导致一些问题。
-
不是全局的,如提供的示例中,您必须转换
标签: mysql sql sql-server