に参加:SQLは左で選択して交換してください、私は正常に動作し、次のクエリを持って
SELECT 'User ID' AS 'uid',
'E-Mail' AS 'email',
'Reason' AS 'reason'
UNION ALL
SELECT a.subid AS 'uid',
a.email AS 'email',
b.data AS 'reason'
FROM sms7l_subscriber a
LEFT JOIN sms7l_history b ON a.subid = b.subid
WHERE (a.confirmed = 0
OR a.enabled = 0
OR a.accept = 0)
AND b.action = unsubscribed
今、私が直接b.dataにいくつかの文字列の置換をしたい...それは、文字列を読み取るために、むしろ醜いが含まれています例えば - 「REASON::UNSUB_SURVEY_FREQUENT REASON::UNSUB_SURVEY_IRRELEVANT REASON::Some text from textfield
」
私は私がすべての「b.data」に周り4-5文字列の置換を行う必要がある「Reason:
」で「REASON::
」を置換し、同様になど応じて文字列を使用して「UNSUB_SURVEY_FREQUENT
」を交換したい
私は次のことを試してみました:
SELECT 'User ID' AS 'uid',
'E-Mail' AS 'email',
'Reason' AS 'reason'
UNION ALL
SELECT a.subid AS 'uid' , a.email AS 'email',
REPLACE (b.data,
'REASON::',
'Reason: ') AS 'reason'
FROM sms7l_subscriber a
LEFT JOIN sms7l_history b ON a.subid = b.subid
WHERE (a.confirmed = 0
OR a.enabled = 0
OR a.accept = 0)
AND b.action = unsubscribed
しかし、それは動作しません。残念なことに、私はこれを単一のクエリで実行しなければならず、置換を含む必要があります。 replaceコマンドを適切にラップする方法に関するヒントは素晴らしいでしょう。
更新:これまでの入力をありがとうございます。 これはMySQLデータベースであり、実際にデータベース自体の文字列を置き換えたり、新しいテーブルを作成したりしたくないのですが、クエリの結果この背後にある理由:私が使用するCMSのための非常に便利なツールがあります。このツールを使用すると、mysqlクエリの結果をきれいに整形されたhtmlテーブル(ソート可能、検索可能なものなど)にレンダリングできます。 残念ながら、私は1つのクエリしか使用できません。クエリ結果をフォーマットするための手続きを呼び出すことはできません。結果の最初の行は、タイトルとして、したがって、クエリの最初に 'union all'ステートメントとして設定することができます。テーブルを読みやすくするために、 'b.data'の文字列を置き換える(変換する)必要があります。例えば。 「理由:: UNSUB_SURVEY_IRRELEVANT」の代わりに「理由:ニュースレターの内容が私にもう気にしない」...理由:: UNSUB_SURVEY_FREQUENTはそれに応じて翻訳されるべきである...
私は望んでいたたとえSQLクエリーがむしろ複雑になっても、私のcmsのための適切なモジュールを書くことができます。
エラーメッセージ:
1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near... (and than comes the query string).
(SQLクエリの形式の変更のためにありがとうございました - より良い今読むために)。
何がうまくいかないのですか? –
どのようなRDBSですか? Microsoft SQL Server、Postgres、Oracle ....? –
あなたは言っています_ "私は4~5文字列の置換えをすべて 'b.data'" _にする必要がありますが、ここに示したREPLACE文は1つだけです。あなたはメッセージのエラーを表示できますか? –