私はT-SQLコードをCコードに変換することを任されています。コードを書いた人は誰も私が少しでもコード礼儀に惑わしていることに変わります。私は、完全に文法的に必要な場合を除いて、コメントの完全な不足、インデントの欠如、および開始/終了ブロックの欠如のためにこれを知っています。T-SQLの "else"解決策をダック
これは、いくつかの問題を引き起こします。私が変換しているコードは、メタフォンのアルゴリズムに基づいています。私は「ベース」と言います。これは正式な実装とは異なる、かなりの数の「文書化されていない改善」があるためです。このため、実際には「正しい」翻訳ではないため、Metaphone実装を手に入れることはできません。
ので、ここでの問題(複数可)のルートです:私は、彼らが意図かなり確信している、そのためMetaphoneのがどのように動作するかの
if @str1='d'
if substring(@str,@cnt,3) in ('dge','dgy','dgi')
set @[email protected] + 'j'
else
set @[email protected] + 't'
:
if @str1='d'
if substring(@str,@cnt,3) in ('dge','dgy','dgi')
set @[email protected] + 'j'
else
set @[email protected] + 't'
しかし、私はもしわかりません
if @str1='d'
if substring(@str,@cnt,3) in ('dge','dgy','dgi')
set @[email protected] + 'j'
else
set @[email protected] + 't'
この小さなスニペットは、取引の大きすぎるではありませんが、その直後、sectioあります:それは実際にあると解釈されています5つの "if"ステートメントと1つの "else"ステートメントのみで、明示的に配置するための開始/終了ブロックはありません。実際にテストして見るためにコードを実行できるのであれば、これは大きな問題ではありませんが、悲しいことに、私はそれをテストする環境がなく、コードの以前の使い方の出力もありません。
TL; DR:は、あなたがたのうち、T-SQLの達人そこにそれがあると解釈されますとシフトして、それらのルールは何上記の二つの文のどの知っていますか/ T-SQLでの競合を減らしますか? (最初の "if"ステートメントに付け加えて、最後の "if"ステートメントに付け加えて、ランダムに1つを選んでください)
EDIT:もう少し楽しいです。
if @str1='t'
if substring(@str,@cnt,3) in ('tia','tio')
set @[email protected] + 'x'
else
if @str2='th'
set @[email protected] + '0'
else
if substring(@str,@cnt,3) <> 'tch'
set @[email protected] + 't'
EDIT2:私が正しくこれらの答えを読んでいる場合は[OK]を、上記の意味ここでは、実際に
if @str1='t'
if substring(@str,@cnt,3) in ('tia','tio')
set @[email protected] + 'x'
else
if @str2='th'
set @[email protected] + '0'
else
if substring(@str,@cnt,3) <> 'tch'
set @[email protected] + 't'
おそらくSQL ServerのT-SQLコードであり、OracleのPL/SQLコードではありません。説明を変更してタグを修正してください。 – Codo
ヘッドアップありがとう。それを私に割り当てた人は、それがPLSQLだと言っていましたが、確認することは決してありませんでした。私はどちらかに経験がなく、それが読みやすいので、私は確かに検証することを心配しませんでした。 –
また、 "shift/reduce"は実際に質問を記述していません。代わりに "T-SQL if/else nesting question"を試してください。 –