結果が「[email protected]
」で、@
シンボル(3)の位置を検索したい場合。出来ますか? SQLiteにINSTR
、LOCATE
、POSITION
またはそのような関数があるとは思われません。SQLiteカラムの文字の位置はどうやって確認できますか?
SELECT ?('[email protected]')
更新私は、カスタム拡張機能を登録してしまったが、私が持っていたことに驚きました。
結果が「[email protected]
」で、@
シンボル(3)の位置を検索したい場合。出来ますか? SQLiteにINSTR
、LOCATE
、POSITION
またはそのような関数があるとは思われません。SQLiteカラムの文字の位置はどうやって確認できますか?
SELECT ?('[email protected]')
更新私は、カスタム拡張機能を登録してしまったが、私が持っていたことに驚きました。
SELECT
email,
POSITION('@' IN email)
From
table
ここであなたが好きかもしれない基本的なリソースです:文字のhttp://sqlzoo.net/howto/source/z.dir/tip238311/sqlite
こんにちは、クール。私はカスタムエクステンションを構築しましたが、私のSQLiteビルドではPOSITIONは利用できません。それはあなたの作品ですか? – tofutim
SQL構文エラーが発生する可能性があります。SELECT email、POSITION(['IN'電子メール)FROM table [テーブルの近く]:構文エラー] 例外名:NS_ERROR_FAILURE – tofutim
私はsqlliteには大きくはありませんが、あなたが(私が思う)sqlliteがそれらを特殊文字として扱うので、ブラケットがあなたに問題を起こしているかもしれません。一重引用符ではなく二重引用符で囲んでください。多分それがそうします。 – Chains
ポジション '@' 関数CHARINDEX(MSSQL)によってfindedすることができます。
SELECT CHARINDEX('@', '[email protected]', 0)
私は人々が答える前に質問を読むことを望みます、CHARINDEXはSQLiteに実装されていません!! – ilomambo
使用charindex('c', column, 0)
それSQLiteのバージョンによって異なります。
これはsqliteではなくsqlサーバの機能です –
はa spiceworks postingからこれを手に入れた:
The first step is to remove all characters up to a specific character using ltrim or rtrim. If you're retrieving a filename then you trim all characters that are not slashes. If you're retrieving a username then you trim everything that is not an @ character. You can then use that trimmed string in a replace function to replace its occurrence with an empty string. That will provide you with every character that you just trimmed in the first step. In other words, the username or filename.
create table example (path varchar(256), email varchar(128));
insert into example values ('/path/to/file1.txt', '[email protected]');
Retrieve user from email:
select replace(email, ltrim(email, '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!#$%^&*()_+-=`~[]\/{}|;:,.<>?'),'') from example;
をあなたがhereを見ることができるように、CHARINDEXは(少なくとも私が使用して3.6.2のバージョンで)SQLiteの標準パッケージではありません。しかし、this拡張子(extension-functions.c)にはCharindexがあります。これは基本的にVB instrと同じです。 sqliteのにこれらの機能を追加するには
:
我々はSQLite拡張モジュール(Windowsであると仮定)を作るためにCのソースコードをコンパイルする必要があります。
小さなmingwコンパイラをインストールし、簡単に行うことができます。
同じフォルダにコピーsqlite3.h
gccの-fPIC -lm -shared延長-functions.c -o libsqlitefunctions.dll
fireup sqliteの
選択load_extension( 'libsqlitefunctions.dll')
その他の文字列関数と数学関数もあります。
私は[extension-functions.c](http://www.sqlite.org/contrib/download/extension)をコンパイルしていたフォルダにsqlite3ext.hをコピーしなければなりませんでした。 -functions.c?get = 25) cygwin x64インストールからgcc-4.8.3で正常にコンパイルされました。ありがとう! –
パスからファイル名を取得します。http://community.spiceworks.com/topic/38836-sqlite-question-how-do-i-find-the-position-of-a-character-in-a-string?page=2から
select replace(path, rtrim(path, replace(path, '/', '')), '') from example;
ガットは、それが誰かを助けることができる願っています。
これが最近追加されたかどうかわかりませんが、INSTR
functionが実際に第1のインスタンスを検出します。
あなたの解決策を共有してください。 – Odys