如果只提供一个字母,Charindex 将不返回任何记录。如果参数与整个单词匹配,则显示记录。为什么???
USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[filter_opombe]
@opombe_par nchar(256)
AS
BEGIN
SELECT Id_opombe
FROM opombe
WHERE (CHARINDEX(@opomba_par, opomba,0) > 0)
END
提前感谢您的所有回复。
如果您需要可变长度的字符串,则必须将其声明为 (n)varchar(x):
对于 (n)char 数据类型,较短的字符串将在末尾填充空格:数据类型为 nchar(5) 的 'x' 变为
'x '
.感谢您的最快回复。
并感谢您的想法。我没有朝那个方向走。但现在一切都清楚了。它不是一种类型,而是修剪参数是解决方案:
解决了。它现在似乎工作。
编辑:
对不起你们所有人。我又看了一遍,朱利安的回答很有魅力。
为了进一步改进这个线程,我将发布带有 CHARINDEX 的解决方案,用于通过单个字母或字符串过滤多列,而不考虑空值、空格。这可能会帮助任何人寻找这种解决方案。
在声明了从表单上任何位置的过滤器文本框或文本框获得的所有这些参数(在函数的参数部分内)之后:
并选择您要选择的所有内容:
你终于把 cherry 放在了顶部......或者更确切地说,cherry 放在了 WHERE 部分中函数的底部:
这应该可以过滤在一个查询(函数)中连接的三个表,并通过单个字母或字符串过滤四列的输出......还有空值和空格。)