当列在位置2中包含1而不使用函数时,排除行

时间:2019-06-27 17:08:43

标签: sql sql-server-2012

我有一列将始终为5位数字,并且每一位将始终为1或0。当第二个位置等于1时,我需要放入where子句以排除。例如,01000为排除在外,但要保留10010。我目前有:

const base = { a: 1};
const source = Object.create(base, {b: 2, c: 3} );
const fieldsMapping = {a: 'aa', b: 'bb', c: 'cc'};

expect(yourFunction(source, fieldsMapping)).toEqual({ bb: 2, cc: 3 }); 

不使用Substring函数怎么办?

编辑:此外,该列在数据库中是varchar(10)。这有关系吗?

3 个答案:

答案 0 :(得分:0)

使用LEFT和RIGHT,然后检查是否为1或以下-

WHERE RIGHT(LEFT(field,2),1) <> '1' OR field IS NULL

答案 1 :(得分:0)

您可以使用like运算符直接检查该字符:

WHERE field LIKE '_1%' OR field IS NULL

答案 2 :(得分:0)

不。 如果“字段”是字符串类型,则需要使用字符串函数进行操作。 SUBSTRING或其他某种味道。 您还可以将其转换为二进制文件,并使用按位AND运算符,但这不能解决根本问题。

您正面临忽略1NF的后果。 科德坚持认为每个“单元”必须是原子的,这是有原因的。你不是。

您可以将此位图分成原子属性列吗?