我试图从两个表中选择数据并将其插入另一个表中.我希望在每个表中的某些内容匹配时选择数据.问题是其中一个比较需要是一样的,我不知所措.sql语句在下面,我相信它至少会显示我想要做的事情.
insert into hr_numbers
(`user_id`, `hr_number`)
select distinct u.user_id, t.num
from temp t, users u
where t.name like '%' + u.l_name + '%';
Run Code Online (Sandbox Code Playgroud)
我试图使用程序,但无法弄清楚,甚至告诉这是否有帮助.
有以下字符串构建的 SQL 查询:
StringBuilder querySelect = new StringBuilder("select * from messages ");
StringBuilder queryWhere = new StringBuilder("where msg_id=?");
if (fileRSVO.getFileName()!= null){
queryWhere.append("and descr LIKE %?% ");
}
querySelect.append(queryWhere);
List<Map<String, Object>> list = getJdbcTemplate().queryForList(querySelect.toString(), params.toArray());
...
Run Code Online (Sandbox Code Playgroud)
问题出在这部分:
queryWhere.append("and descr LIKE %?% ")
Run Code Online (Sandbox Code Playgroud)
LIKE不起作用。
在调试中检查 - 它已添加到所有查询中。
它应该是单引号还是其他一些技巧?
谢谢。
已编辑
试过单引号:queryWhere.append("and descr LIKE '%?%' ")
不起作用
这是调试字符串:
select * from messages where msg_id=? and descr LIKE '%?%'
Run Code Online (Sandbox Code Playgroud) 我正在制作一个简单的asp.net/c#应用程序,直到现在,Oledb的所有功能都可以正常工作。like语句仅不能通过c#进行工作,它可以用作Access中的SQL查询。我也尝试过使用'*a*'代替,'*@uname*'但是它仍然没有返回任何东西。
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(
"SELECT accounts.ID, uname, firstname, lastname, description FROM accounts, profiles " +
"WHERE accounts.ID = profiles.ID AND uname like '*@uname*'", connection);
dataAdapter.SelectCommand.Parameters.Add("@uname", OleDbType.VarChar).Value = tbxFilter.Text;
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个与以下规则匹配的行的查询:
有可能这样做吗?
谢谢
我正在使用 MySQL 查询一个名为“clients”的客户详细信息表,其中包括一个名为“email”的电子邮件地址列。我想从 gmail、hotmail 和 yahoo 中排除所有电子邮件地址。我已尝试编写查询(有关我的最新信息,请参见下文),但我似乎无法正确使用 NOT LIKE 或找到替代方法。
有人可以帮忙吗?
SELECT name, email
FROM clients
WHERE email NOT LIKE '%gmail%'
OR email NOT LIKE '%hotmail%'
OR email NOT LIKE '%yahoo%'
;
Run Code Online (Sandbox Code Playgroud)
PS 我已经搜索了现有的问题,但没有找到我需要的答案。如果已经存在,我很抱歉,如果你找到一个,我会很感激你指出我正确的方向。我是这一切的新手,因为几个月前我开始学习 SQL 以进行工作。
我有一个名为'products'的动态表,其中包含多种语言.表格列如下所示:
id, product_id, store_de, store_en, store_fr, store_es... etc
Run Code Online (Sandbox Code Playgroud)
语言可以或多或少.
现在我想更新此表并将以"store_"开头的所有列设置为值1.
我尝试了以下方法:
$stmt = $dbh->prepare( "UPDATE products SET `store_%` = ? WHERE product_id = ?" );
$stmt->execute( array( 1, $lastID ) );
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
SQLSTATE [42S22]:找不到列:1054'字段列表'中的未知列'store%'
有没有办法更新以'store_'开头的所有列,或者我是否必须列出所有列?
基于jekaby的答案,这里有一个对我有用的完整解决方案:
$get_stores = $dbh->prepare("SHOW COLUMNS FROM products_active WHERE field REGEXP '^store'");
$get_stores->execute();
$stores = $get_stores->fetchAll();
$update_string = "";
$first_store = true;
foreach($stores as $store) {
if(!$first_store) {
$update_string .= ", ";
} else {
$first_store = false;
}
$update_string .= $store['Field']." = '".$status."'";
}
$update_activity …Run Code Online (Sandbox Code Playgroud) 我正在尝试与LIKE LOWER('% %')命令进行模式匹配,但是我认为我使用带有 %s 的 python 变量这一事实正在搞砸。我似乎找不到百分比符号的任何转义字符,而且我的程序没有给我任何错误。这是问题还是我还缺少其他东西。如果我只是运行它确实有效,LIKE %s但是我需要能够像不等于一样搜索。
# Ask for the database connection, and get the cursor set up
conn = database_connect()
if(conn is None):
return ERROR_CODE
cur = conn.cursor()
print("search_term: ", search_term)
try:
# Select the bays that match (or are similar) to the search term
sql = """SELECT fp.name AS "Name", fp.size AS "Size", COUNT(*) AS "Number of Fish"
FROM FishPond fp JOIN Fish f ON (fp.pondID = f.livesAt)
WHERE LOWER(fp.name) LIKE LOWER('%%s%') …Run Code Online (Sandbox Code Playgroud) python postgresql mysql-real-escape-string pattern-matching sql-like
我有一张看起来像这样的桌子
> select * from mytable
id value
0 1 hello world
1 2 hello_world
2 3 hello+world
Run Code Online (Sandbox Code Playgroud)
我试图强加一个 alembic 检查约束,其中值value不能有:字符。我将如何使用alembic.op对象来做到这一点?什么是upgrade()和downgrade()功能?
编辑:我使用的数据库是 Mysql。
我正在尝试使用 SQL 进行文件搜索。我需要将搜索保留在我正在进行比较的目录中。在 SQL 中进行 LIKE 或 NOT LIKE 比较时,通配符 '%' 用于表示 0、1 或多个字符。有没有办法排除或分隔通配符搜索中涉及的字符?我需要进行如下比较:
LIKE 'C:/Data/%.txt'
Run Code Online (Sandbox Code Playgroud)
但是,我不希望 '%' 找到任何在通配符搜索中涉及斜杠 '/' 字符的记录。我希望它返回以下示例:
C:/Data/file1.txt
C:/Data/records_2017.txt
C:/Data/listing#7.txt
Run Code Online (Sandbox Code Playgroud)
但我不希望通配符在其中查找带有斜杠的记录,因为在我的情况下,它超出了我有兴趣在以下位置进行文件搜索的当前文件夹:
C:/Data/OtherFolder/file1.txt
C:/Data/System/SomethingElse/records_2016.txt
Run Code Online (Sandbox Code Playgroud)
上面的例子将被返回,因为 Data 后面的斜杠和 .txt 扩展名之间的所有内容都是通配符的免费游戏。我不希望在我的通配符搜索中返回上述示例。
我尝试做字符集,例如 [^/],但它似乎只能排除带有斜杠 '/' 字符的字符串 BEGINNING。我需要防止通配符在字符串中的任何地方使用斜杠。
当使用带有通配符的like关键字时,我无法弄清楚为什么我得到错误的结果.为了讨论起见,我举了一些小例子来说明我的问题.假设我们有一些表格
CREATE TABLE TestingLike(
[Name] VARCHAR(50)
)
INSERT INTO TestingLike VALUES ('A'), ('AB'), ('L') ,('LJ')
Run Code Online (Sandbox Code Playgroud)
现在,当我使用此搜索条件时
SELECT [Name] FROM TestingLike WHERE [Name] LIKE 'A%'
SELECT [Name] FROM TestingLike WHERE [Name] LIKE 'L%'
Run Code Online (Sandbox Code Playgroud)
第一个查询返回(A,AB) ,而第二个返回只是大号.奇怪的是,使用临时表时不会发生这种情况
对于上帝的爱,有人可以解释为什么会发生这种情况,我做了一些研究,但是找不到答案,我使用SQL SERVER RC1 2017以及SQL SMS.
感谢您的时间.
下面是执行计划的图片