gpt4 book ai didi

sql - SQL Server 中的 Oracle varchar2 等效项

转载 作者:行者123 更新时间:2023-12-02 10:33:02 25 4
gpt4 key购买 nike

create table #temp(name nvarchar(10))
insert into #temp values('one')
select * from #temp where name = 'one'
select * from #temp where name = 'one ' --one with space at end
drop table #temp

在上面我使用了 nvarchar 作为名称。我的要求是第一个选择查询的结果应该存在,并且第二个查询不应返回结果。不要修剪名称。请告诉我在 sql server 中可以使用哪种数据类型?

最佳答案

它不是可以解决此问题的数据类型。你需要看看这篇文章: INF: How SQL Server Compares Strings with Trailing Spaces

SQL Server follows the ANSI/ISO SQL-92 specification (Section 8.2, , General rules #3) on how to compare strings with spaces. The ANSI standard requires padding for the character strings used in comparisons so that their lengths match before comparing them. The padding directly affects the semantics of WHERE and HAVING clause predicates and other Transact-SQL string comparisons. For example, Transact-SQL considers the strings 'abc' and 'abc ' to be equivalent for most comparison operations.

有多种方法可以克服这个问题,其中之一是使用 Like

select * from #temp where name like 'one ' --one with space at end

这不会返回任何结果。

您应该看到这篇博文:Testing strings for equality counting trailing spaces作者:安东尼布洛施

关于sql - SQL Server 中的 Oracle varchar2 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12473422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com