У меня есть следующий фрагмент кода. Я не совсем понимаю, что результат имеет только первый оператор EXEC
. Может кто поможет объяснить, пожалуйста?Оператор SQL Server LIKE с сопоставлением столбцов NCHAR
USE tempdb;
GO
IF OBJECT_ID('dbo.students') IS NOT NULL
DROP TABLE dbo.students;
CREATE TABLE dbo.students
(
id INT NOT NULL IDENTITY PRIMARY KEY,
name NCHAR(10)
);
INSERT INTO dbo.students(name)
SELECT c FROM(VALUES(N'ab'), (N'cd'), (N'ef'), (N'gh')) AS DATA(c);
SELECT *, DATALENGTH(name)FROM dbo.students;
GO
IF OBJECT_ID(N'dbo.check_address') IS NULL
BEGIN
EXEC('CREATE PROCEDURE dbo.check_address AS SELECT ''to be replaced''');
END;
GO
ALTER PROCEDURE dbo.check_address @name NCHAR(10)
AS
BEGIN
SELECT * FROM dbo.students WHERE name LIKE N'%' + @name + N'%';
END;
GO
EXEC check_address N'ab';
EXEC check_address N'a';
@DavidG есть два ... один 'N'ab'', один' N'a'' –
. Сначала я попытался попробовать с помощью 'nvarchar (10)' вместо 'nchar (10)' для как столбец, так и параметр –
@MarcGravell Я действительно не должен стекать переполнение так поздно ночью! – DavidG