我有一个带两个字段的学生表(id:数字,名称:10个字符) 名称列的示例值是:'William [2 space]','Ethan [5 space]' (将添加空格以满足最大长度)
下面的查询工作正常。 (硬代码或字符串插值)
select * from where name = 'William'
or select * from where name = 'William '
但是当我使用如下参数时,它不起作用
select * from where name = :Name
and then inject the parameters
var result = ctx.ExecuteStatement(query, new { Name = name })
So when name = 'William ', it work.
But when name = 'William', it doesn't work.
=>我希望它能在两种情况下工作吗?请帮我解决这个问题。
所以我的临时解决方案是在比较之前对列进行修剪。但是我认为这只是解决问题而不能完全解决问题,因为oracle会自动忽略空白(我在第一个示例中显示)
select * from where trim(name) = :Name
答案 0 :(得分:2)
请勿使用char
作为数据类型来存储长度可变的字符串。请改用varchar2
答案 1 :(得分:1)
您可以通过
添加空格name = name.PadRight(10);
PadRight将文本向左对齐,并用空格填充字符串以获取定义的长度。