この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
2018年07月19日
全角スペースを無視して検索する
氏名データは、姓と名の間に全角スペースが入っている。
例:山田 太郎
like '山田%'で検索できるのだが、
顧客は「山田二郎さんもいるので、山田太郎で検索したい」という。
データに全角スペースが含まれているので、
like '山田太郎%' でも = '山田太郎' でも検索できない。
仕方ないので、検索値に全角スペースが含まれているかどうかを判断し、
全角スペースが含まれている場合は
select * from tableName where name like '山田 太郎%';
含まれていない場合は
select * from tableName where replace(name,' ','') like '山田太郎%';
とした。
注)
name : 氏名データが登録されているカラム名
例:山田 太郎
like '山田%'で検索できるのだが、
顧客は「山田二郎さんもいるので、山田太郎で検索したい」という。
データに全角スペースが含まれているので、
like '山田太郎%' でも = '山田太郎' でも検索できない。
仕方ないので、検索値に全角スペースが含まれているかどうかを判断し、
全角スペースが含まれている場合は
select * from tableName where name like '山田 太郎%';
含まれていない場合は
select * from tableName where replace(name,' ','') like '山田太郎%';
とした。
注)
name : 氏名データが登録されているカラム名
2018年02月16日
2018年02月15日
Call to undefined method DB_Error::prepare()
Call to undefined method DB_Error::prepare() ....
DBはPostgresで、PEARで接続しています。
PEARのインストールを疑い、
DB接続用のライブラリを再インストールしても結果は変わらず。
このページの回答を読んで気付きました。
データベース名を間違えていました。
2017年10月14日
phpPgAdminのインストール
Cent OS 7、PHP 5.4.16 にphpPgAdmin 5.1をインストール、Postgresは9.2.18。
?@conf/config.inc.php を自環境に応じて編集する。
$conf['servers'][0]['host'] = 'localhost';
confディレクトリはphpPgAdminをインストールしたディレクトリにあります。
?Aてっとり早くログインするために postgres や root でログインできるようにする。
$conf[‘extra_login_security’] = false;
?B postgresのパスワードを指定したが、省略しても大丈夫かもしれない。←大丈夫
alter user postgres with password 'パスワード';
?C /var/lib/pgsql/data/pg_hba.conf を編集
pearとIPv4のidentをtrustに変更した。IPv6のidentは放置した。
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all pear
local all all trust
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1 1/32 trust
# IPv6 local connections:
host all all ::1/128 ident
?DPostgresを一旦停止し、再起動する。
?Eログインしてみる。
ログインできた。
?FPostgresのアカウント追加
create role ユーザ名 with createdb password 'パスワード';
alter role ユーザ名 with login; を実行した。
?Gセキュリティ強化のため postgres でのログイン禁止
$conf[‘extra_login_security’] = true;
?Hセキュリティ強化のため Trustを禁止する
/var/lib/pgsql/data/pg_hba.conf を編集
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all pear
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1 1/32 md5
# IPv6 local connections:
host all all ::1/128 ident
?IPostgresを一旦停止し、再起動する。
?Jログインできることを確認する
注)
上記の操作で私の環境ではphpPgAdminの設定を完了できました。
しかし、他環境での動作を保証するものではありません。
あくまでも参考としてご覧ください。
?@conf/config.inc.php を自環境に応じて編集する。
$conf['servers'][0]['host'] = 'localhost';
confディレクトリはphpPgAdminをインストールしたディレクトリにあります。
?Aてっとり早くログインするために postgres や root でログインできるようにする。
$conf[‘extra_login_security’] = false;
?B postgresのパスワードを指定したが、省略しても大丈夫かもしれない。←大丈夫
alter user postgres with password 'パスワード';
?C /var/lib/pgsql/data/pg_hba.conf を編集
pearとIPv4のidentをtrustに変更した。IPv6のidentは放置した。
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all pear
local all all trust
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1 1/32 trust
# IPv6 local connections:
host all all ::1/128 ident
?DPostgresを一旦停止し、再起動する。
?Eログインしてみる。
ログインできた。
?FPostgresのアカウント追加
create role ユーザ名 with createdb password 'パスワード';
alter role ユーザ名 with login; を実行した。
?Gセキュリティ強化のため postgres でのログイン禁止
$conf[‘extra_login_security’] = true;
?Hセキュリティ強化のため Trustを禁止する
/var/lib/pgsql/data/pg_hba.conf を編集
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all pear
local all all md5
# IPv4 local connections:
# host all all 127.0.0.1/32 ident
host all all 127.0.0.1 1/32 md5
# IPv6 local connections:
host all all ::1/128 ident
?IPostgresを一旦停止し、再起動する。
?Jログインできることを確認する
注)
上記の操作で私の環境ではphpPgAdminの設定を完了できました。
しかし、他環境での動作を保証するものではありません。
あくまでも参考としてご覧ください。
2017年10月10日
Postgresのoidオプション
古いバージョンのPostgresはテーブルを作成するとoidsという項目が自動的に追加されていた。
連続した整数が登録されており、データの識別に利用していた。
いつの頃からかoidsはオプション指定しないと作成されなくなったと思っていたが、
昔のブログにこんな記事を書いていた。
このオプション、今も残っているのかと思いググッてみると、
Postgres 9.6について記載されたページに下記の趣旨の記述があった。
オブジェクト識別子(OID)はPostgreSQLの内部で様々なシステムテーブルのプライマリキーとして使用されます。
健在だ。
続報
連続した整数が登録されており、データの識別に利用していた。
いつの頃からかoidsはオプション指定しないと作成されなくなったと思っていたが、
昔のブログにこんな記事を書いていた。
Postgresを7.4.26から8.1.18にバージョンアップしました。
default_with_oidsのデフォルトがfalseになりました。
このオプションをfalseに設定した場合、CREATE TABLEでWITH OIDSを指定しない限り、ユーザが作成したテーブルはOID列を持たなくなります。
コマンド例
create table virus_rireki(
reg_id integer,
att_name varchar(40),
oldvalue text,
newvalue text,
username varchar(20)
) WITH OIDS;
このオプション、今も残っているのかと思いググッてみると、
Postgres 9.6について記載されたページに下記の趣旨の記述があった。
オブジェクト識別子(OID)はPostgreSQLの内部で様々なシステムテーブルのプライマリキーとして使用されます。
健在だ。
続報