1

例:-ブレーキ、クレーンなど

私の従業員テーブルには、がありENAME,ENO,JOB,SALARYます。

ここでは、名前の中心文字が「A」であるenameを抽出します。

enameの長さが奇数の場合は、中央に配置するため、enameの奇数と偶数の位置を検出する必要があります。

それで、私はこれを試しましたが、立ち往生しました、それで私はここから助けを期待できますか?

SELECT ENAME
FROM EMPLOYEES
WHERE A IN
(SELECT ENAME,
       SUBSTR(ENAME,LENGTH(ENAME)/2+1,1)
FROM EMPLOYEES)
;
4

6 に答える 6

3

これは、奇数の長さの文字列で機能します。これは、あなたが望んでいたものだと思います。次回はそのようなキャップを使用しないでください。あなたの投稿を読むだけで5分かかりました。

SELECT `ENAME` FROM  `EMPLOYEES` WHERE SUBSTR(`ENAME`, LENGTH(`ENAME`)/2+1, 1) =  'A'
于 2011-07-21T18:55:53.297 に答える
1

これは、名前の文字数が奇数であることを最初にチェックし、次にチェックを行います。

2 番目の部分では、真ん中の 2 文字の偶数の長さがチェックされ、どちらかが A であるかどうかが確認されます。

これは SQL Server の構文ですが、Oracle も同様であると思います。

SELECT ENAME
FROM EMPLOYEES
WHERE ((LEN(ENAME) %2) = 1
AND SUBSTRING(ENAME, LEN(Ename)/2+1, 1) = 'A')
OR
((LEN(ENAME) %2) = 0
AND SUBSTRING(ENAME, LEN(ENAME)/2-1, 2) LIKE '%A%')
于 2011-07-21T18:57:37.957 に答える
1
SELECT ename
  FROM employees
WHERE
INSTR(
CASE
  WHEN MOD(LENGTH(ename),2) = 0 THEN SUBSTR( ename, LENGTH(ename)/2, 2 )
  ELSE SUBSTR( ename, (1+LENGTH(ename)/2), 1 )
END,
'A'
) > 0
于 2011-07-21T19:04:20.133 に答える
0

これがあなたの言いたいことだと思います:

SELECT ENAME FROM EMPLOYEES where ENAME=SUBSTR(ENAME,LENGTH((ENAME+1)/2),1)

どのデータベース サービスを使用していますか? (たとえば、MS SQL サーバーでは Len を使用する必要があります)

于 2011-07-21T18:58:00.203 に答える
0

これを試すこともできます:

select ename from emp where substr(ename,ceil((length(ename))/2),1)='A';

これは、偶数の長さと奇数の長さの両方の文字列で機能します...お役に立てば幸いです。

于 2013-07-03T18:59:42.973 に答える