2011-09-27 104 views
0

我有一个带有firstName和lastName列作为字符串的表。现在想要获取那些column.my表中的所有唯一的第一个字符在表中有一千行,但我只是想要SQL中的任何字符串函数来做到这一点?在sql中获取字符串的所有唯一字符

还有一件事我只需要找到字母没有特殊characters.As我的表是大它包含名字和姓氏用特殊字符我需要忽略他们

EG:假设我的表包含姓名条目::杰克,汤姆,谜语,和尚,* OPETH

在这种情况下,我的SQL应该返回J,M,R,T

+0

当您提出问题时,请务必在几分钟内询问您需要的所有内容,而无需更改。更多:如果您使用oracle,请将您的问题标记为oracle! – Marco

回答

1

试试这个:

SELECT DISTINCT LOWER(SUBSTR(firstName,1,1)) firstChars 
FROM your_table 
WHERE LOWER(SUBSTR(firstName,1,1)) IN 
('a','b','c','d','e','f','g','h','i','j', 
    'k','l','m','n','o','p','q','r','s','t', 
    'u','v','w','x','y','z') 
ORDER BY firstChars 
+0

这不是根据我的要求返回字母表的列表,而是我需要的另一个过滤是我只需要字母表来考虑没有特殊字符。上面不返回所需列的第一个字母表 –

+0

@Ashish Sharma:我的查询返回_firstName_列的第一个字符而没有重复。这有什么问题? – Marco

+0

@Ashish Sharma:查询结果正是您要求的结果(_j,m,r,t_) – Marco

-1
SELECT DISTINCT left(firstName,1) FROM table_name 
+0

LEFT()不是Oracle函数。您的解决方案也无法解决过滤掉非字母字符的需要。 – APC

+0

Ya r rite ..我使用Sql Server 2005和更高版本 – user909058

0

如果您在10g或更高版本的正则表达式查询的工作需要少了很多打字:)

SELECT DISTINCT SUBSTR(firstName,1,1) 
FROM your_table 
WHERE REGEXP_LIKE(firstName,'^[[:alpha:]]') 
/

您可能希望应用UPPER()或LOWER()来平滑大小写混合的结果。

相关问题