Sql 如何在本机编译的存储过程中比较varchar参数?
我正在将一些表和存储过程迁移到内存中优化的表和本机编译的存储过程。我一直在比较字符串 比较、排序和操纵不符合以下条件的字符串 本机编译的存储系统不支持使用*\u BIN2排序规则 程序Sql 如何在本机编译的存储过程中比较varchar参数?,sql,sql-server,sql-server-2014,in-memory-database,oltp,Sql,Sql Server,Sql Server 2014,In Memory Database,Oltp,我正在将一些表和存储过程迁移到内存中优化的表和本机编译的存储过程。我一直在比较字符串 比较、排序和操纵不符合以下条件的字符串 本机编译的存储系统不支持使用*\u BIN2排序规则 程序 在AdventureWorks2014的副本中,更改@SecretKey参数的排序规则似乎对我有效: CREATE PROCEDURE [User].[GetFingerPrint] @Id int, @SecretKey VARCHAR(512) WITH NATIVE_COMPILA
在AdventureWorks2014的副本中,更改
@SecretKey
参数的排序规则似乎对我有效:
CREATE PROCEDURE [User].[GetFingerPrint]
@Id int,
@SecretKey VARCHAR(512)
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)
SELECT [Id]
,[FingerPrint]
,[SecretKey]
,[BranchId]
,[SteadySign]
,[CreatedOn]
,[ModifiedOn]
FROM [User].[FingerPrints]
WHERE [Id] = @Id AND [SecretKey] = @SecretKey COLLATE LATIN1_GENERAL_BIN2
END
GO
那么,您可以将SecretKey更改为使用BIN2排序规则吗?请确保这不会中断需要不同排序规则的调用方
CREATE PROCEDURE [User].[GetFingerPrint]
@Id int,
@SecretKey VARCHAR(512)
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)
SELECT [Id]
,[FingerPrint]
,[SecretKey]
,[BranchId]
,[SteadySign]
,[CreatedOn]
,[ModifiedOn]
FROM [User].[FingerPrints]
WHERE [Id] = @Id AND [SecretKey] = @SecretKey COLLATE LATIN1_GENERAL_BIN2
END
GO