2015-10-05 101 views
0

我们有大量的商业名称存储在我们的数据库中。我们的一些客户进入SSN到names..i我试图让所有的企业名称获取句子中的单词长度

问题:

找到名字每个字的长度,并返回任何人具有9的长度或11

实施例:

  1. 测试123456789 TEST2 - 这应该在结果

  2. 测试123456 test2-显示 - 这不应该显示

  3. 测试123456789 TEST2 12345678911 - 本应显示

任何字在字符串中(数字,或字母或两者的组合),其是9或11应returned..thank你

+3

欢迎堆栈溢出!你似乎在要求某人为你写一些代码。堆栈溢出是一个问答网站,而不是代码写入服务。请[see here](http://stackoverflow.com/help/how-to-ask)学习如何编写有效的问题。 –

+0

感谢@hcaelxxam它解决了我的problem..sorry如果我问的代码,因为我不知道从哪里开始,我的想法是分割字符串成单词,然后检查其将采取的方式长的每个单词的长度。 – showri

回答

3

你可以只使用等。百分号用于忽略列名称前后的任何内容,用于确保前后有空格的空格,以及数字值的范围搜索。

SELECT 
    * 
FROM 
    Table 
WHERE 
    Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %' 
    OR Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %' 

编辑:

其实,重读最初的问题,它看起来像你不是在找只有9或11个数字字符串,但所有的字符串。在那种情况下@JoeMalpass可能是我想的更正确。

SELECT 
    * 
FROM 
    Table 
WHERE 
    --Surrounded by spaces 
    Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    --At the beginning with extra information after 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %' 
    --At the beginning with extra information before 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    --The entire column 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
    OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]' 
+0

您还应该包含以子字符串开头或结尾的版本(重复子句末尾没有'%'的末尾处的'%')。 – CactusCake

+0

他也可以删除空格,因为%不包含任何内容,但公平点。然后 – hcaelxxam

+0

卸下空间将允许任何字符串,虽然长于911个字符... – CactusCake