0

varchar 内の 2 つの同じ母音の正規表現が必要です。

いいね'linEbrEak'(ただし、2 つだけで、それ以上でもそれ以下でもありません)

私は次のようなことを考えました:

'%[aeiouAEIOU]%[aeiouAEIOU]%'

しかし、それは私に任意の 2 つの母音を与えます。同じ種類が2つ欲しいです。

SQL Server 2008 を使用しています。

これは正規表現でも可能ですか? どうもありがとう!

その他の例:

LeIpzIg
LOndOn

編集:正規表現で不可能な場合(おそらく難しすぎる場合)は問題ありません。他のソリューションにも満足していますが、読みやすく、速く、短くする必要があります。

4

2 に答える 2

4

これはきれいでも短くもありませんが、シンプルです。

SELECT word
FROM tabl
WHERE
  -- assuming case sensitive based on your example
  (word LIKE '%[Aa]%[Aa]%' AND word NOT LIKE '%[Aa]%[Aa]%[Aa]%')
  OR
  (word LIKE '%[Ee]%[Ee]%' AND word NOT LIKE '%[Ee]%[Ee]%[Ee]%')
  OR
  (word LIKE '%[Ii]%[Ii]%' AND word NOT LIKE '%[Ii]%[Ii]%[Ii]%')
  OR
  (word LIKE '%[Oo]%[Oo]%' AND word NOT LIKE '%[Oo]%[Oo]%[Oo]%')
  OR
  (word LIKE '%[Uu]%[Uu]%' AND word NOT LIKE '%[Uu]%[Uu]%[Uu]%')

ある母音を 2 つと別の母音を 3 つ持つ場所をどうするかを指定していなかったように思います。それは資格がありますか?そうでない場合 (Alaska StatE PEak Park正確に 2 つの E が含まれているにもかかわらず悪いとします)、代わりにこれが必要になる場合があります。

SELECT word 
FROM tabl 
WHERE
  -- assuming case sensitive based on your example
  ( word LIKE '%[Aa]%[Aa]%'
    OR word LIKE '%[Ee]%[Ee]%'
    OR word LIKE '%[Ii]%[Ii]%'
    OR word LIKE '%[Oo]%[Oo]%'
    OR word LIKE '%[Uu]%[Uu]%' 
  )
  AND word NOT LIKE '%[Aa]%[Aa]%[Aa]%'
  AND word NOT LIKE '%[Ee]%[Ee]%[Ee]%'
  AND word NOT LIKE '%[Ii]%[Ii]%[Ii]%'
  AND word NOT LIKE '%[Oo]%[Oo]%[Oo]%'
  AND word NOT LIKE '%[Uu]%[Uu]%[Uu]%'
于 2013-09-30T21:08:06.347 に答える
0

考えられる解決策の 1 つ

DECLARE @txt VARCHAR(100) = 'LeIpzIg'

DECLARE @vowels TABLE ( letter CHAR(1))
INSERT INTO @vowels VALUES ('a'),('e'),('i'),('o'),('u') 

;WITH cte AS (
    SELECT letter , LEN(@txt) - LEN(REPLACE(LOWER(@txt),letter,'')) as number_of_vowel
    FROM @vowels
    WHERE LOWER(@txt) LIKE '%'+ letter +'%'
) 
SELECT letter
FROM cte 
WHERE number_of_vowel >= 2
于 2013-09-30T19:35:20.693 に答える