查询非规范化表

时间:2018-04-27 18:33:14

标签: sql sybase

我有一个包含多对多关系的表,我需要省略3种类型的属性(从0开始,从1开始并在属性中有 - )并且只选择只有1种属性的用户是一个字母数字字符串。

请告知如何在SQL中实现。

User        Property
------      ----------
A1          0XXX
A1          1XXX
A1          X-XXX
A1          ABC2

A2          0XXX
A2          AC2B
A2          X-XXX

A3          0XXX
A3          1XXX

A4          DEF0

2 个答案:

答案 0 :(得分:1)

您可以使用:

SELECT [User]
FROM tab
EXCEPT
SELECT [User]
FROM tab
WHERE LEFT(Property,1) IN ('0','1')
  OR Property LIKE '%-%';

答案 1 :(得分:0)

SELECT * FROM <table>
WHERE user NOT IN 
(
    SELECT user FROM <table>
    WHERE Property LIKE '%-%'
    OR Property LIKE '0%'
    OR Property LIKE '1%'
)
AND Property LIKE '%[^a-zA-Z0-9]%'