获取列名匹配正则表达式模式sql

时间:2016-03-30 09:28:16

标签: php sql regex pdo

我想获取列名称为foo32的表中的所有列。数字32可以是任意数字。我有以下查询工作正常,自然它匹配不仅包含数字的列。

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name =  'table1'
AND table_schema =  'database1'
AND column_name LIKE 'foo%'

不幸的是,上述查询将与foo12abcfooCDE匹配。

我根据此页面尝试了以下操作,但它返回了一个空结果,所以必须是遗漏。

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name =  'table1'
AND table_schema =  'database1'
AND column_name REGEXP 'foo[^0-9]'

示例表:

foo1 | foo21 | fooABC | foo123ABC | foo19 | col12
_________________________________________________
// data ...

我希望查询返回列foo1foo21foo19

1 个答案:

答案 0 :(得分:0)

使用foo[^0-9]您正在寻找foo,然后是 0-9的任何内容(^开头的foo[0-9]字符类意味着对后面的内容的否定。

如果你尝试foo它应该可以工作(虽然它会捕获不以^foo\d+$ 开头并且有额外后缀的东西。)

这应该是你要找的东西:

foo

转换为:

    在表名开头(^)之后立即
  • $
  • 后跟一个或多个数字,直到表名结尾($(document).ready(function(){ $.getJSON("php/drpdwn.php", success = function(data){ var items = ""; for(var i = 0; i < data.length; i++){ // RETAIN JSON KEY AS OPTION VALUE, JSON VALUE AS OPTION TEXT items +="<option value='"+data[i].id+"'>" + data[i].name+"</option>"; } $("#a1_title").html(items); $("#a1_title").change(); }); $("#a1_title").change(function(){ // OBTAIN SELECTED VALUE var selectedValue = $(this).find(":selected").text(); if(selectedValue == "Landuse/landcover"){ $.getJSON("php/lulc_db.php", success = function(data){ var items = ""; for(var i = 0; i < data.length; i++){ items += "<option value='" + data[i] + "'>" + data[i] + "</option>"; } /* update options */ $("#a2_title").html(items); }); }else if(selectedValue == "Soil"){ $.getJSON("php/soil_db.php", success = function(data){ var items = ""; for(var i = 0; i < data.length; i++){ items += "<option value='" + data[i] + "'>" + data[i] + "</option>"; } /* update options */ $("#a2_title").html(items); }); } }); $("#a2_title").change(function(){ //the main problem start from here //this the only one which is not working var selectedtext = $(this).find(":selected").text(); if(selectedtext == "Built Up"){ alert("k"); $('input[type="submit"]').on('click', function(){ $.getJSON("php/geojson.php?layer=" + $(this).text(), success = function(data){ console.log(data); }); }); } }); });