Pyspark: 如果列包含另一列的字符串,过滤数据帧(SQL LIKE语句)
我试图以以下方式过滤我的pyspark数据框架:我有一个包含long_text和一个包含数字的列的列.如果长文本包含number,我想保留列. 我正在尝试使用sql LIKE语句,但是看来我无法将其应用于另一列(此处number) 我的代码如下: from pyspark.sql.functions import regexp_extract, col, concat, lit from pyspark.sql.types import * PN_in_NC = (df .filter(df.long_text.like(concat(lit("%"), df.number, lit("%")))))) 我收到以下错误: Method like([class org.apache.spark.sql.Column]) does not exist. 我尝试了多个修复它的方法(例如,在过滤器前创建'%number%'字符串为列,而不是使用lit,using
0 2024-02-29
编程技术问答社区
为什么我们在SQLite中需要GLOB子句?
我是Android开发人员,最近在SQLite中遇到了全球条款.我不明白为什么我们需要Glob,因为它已经到位了. 这两个子句都有代表单个字符和多个字符的通配符.唯一的区别是,环球是案例敏感的. 但这是全部吗?是否有任何疑问,例如不好或不适当的选择?是否有任何情况我们绝对必须使用Globe VS,反之亦然? 解决方案 案例灵敏度本身很有用,因为这与正常索引更好. 此外,Glob支持字符类: 球形规则: *匹配零或更多字符的任何序列. ?完全匹配一个字符. [...]与字符列表中的一个字符匹配. [^...]匹配一个不在封闭列表中的一个字符. 使用[...]和[^...]匹配,可以包括]字符 在列表中,使其成为[或^之后的第一个字符. A 可以使用-指定字符范围.例子: [a-z]匹配任何单个下案字母.要匹配-, 它是列表中的最后一个字符. 其他解决方案 Glob将在很多情况下都使用索引,而有少量数据将是微不足道的,但是
2 2024-02-18
编程技术问答社区
在Android上通过ListView项目和数据库进行搜索
我尝试了此代码,但是要遍历所有列表项目,这太时了. item_all是一个列表,其中包含我从数据库中获得的数据. et_Search.addTextChangedListener(new TextWatcher() { int textlength; long time = System.currentTimeMillis(); @Override public void onTextChanged(CharSequence s, int start, int before, int count) { textlength = getSearchText().length(); item_filtered = new ArrayList(); long time = System.currentTimeMillis(); int i = 0;
2 2024-02-11
编程技术问答社区
如何使用 "LIKE "和"%"来检查安卓系统中变量的相似性(Java代码)
我正在使用Java上的Android应用程序,我需要在Java代码中查询数据库,以检查UserInput(variable)语句是否包含我的SQLITE数据库中使用LIKE在Java中的LIKE中的单词代码, 我使用了此代码,但它不起作用: cursor = db.rawQuery("SELECT shompet FROM sentence WHERE " + column + " LIKE '%" + newMessage + "%'", null); newMessage是我的变量(UserInput) 我读了类似的话题,但它们不是我的回答,或者它们是如此复杂. 解决方案 在表达式'hi' LIKE '%hi there%'中,无法找到任何字符来替换%通配符,以使字符串匹配. 您需要以相反的方式进行比较,即'hi there' LIKE '%hi%': db.rawQuery("SE
2 2024-02-11
编程技术问答社区
如何在安卓系统中使用sqlite的glob
我有一个23,000个单词的数据库.我想让查询返回以某个搜索字符串开头的所有单词.阅读 sqlite sqlite suk sqlite in android 我能够使用like获得工作查询.在这里是: SQLiteDatabase db = getReadableDatabase(); SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); String [] sqlSelect = { KEY_WORD }; String sqlTables = TABLE_WORDS; //String selection = KEY_FUZZYWORD + " =?"; // for an exact match String selection = KEY_FUZZYWORD + " LIKE ?"; String[] selectionArgs = { searchString + "%" }; String limit = Integer
2 2024-02-09
编程技术问答社区
避免在使用Like运算符的SQL查询中使用参数进行SQL注入?
从我的前任接管一些代码,我找到了一个使用类似操作员的查询: SELECT * FROM suppliers WHERE supplier_name like '%'+name+%'; 试图避免SQL注入问题并参数化此问题,但我不太确定如何实现这一问题.有什么建议吗? 请注意,我需要经典ado.net的解决方案 - 我真的没有将此代码切换到Linq之类的东西. . 解决方案 尝试以下方法: var query = "select * from foo where name like @searchterm"; using (var command = new SqlCommand(query, connection)) { command.Parameters.AddWithValue("@searchterm", String.Format("%{0}%", searchTerm)); var result = command.ExecuteReade
4 2024-01-19
编程技术问答社区
在SQL LIKE子句中使用SqlParameter不起作用
我有以下代码: const string Sql = @"select distinct [name] from tblCustomers left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');"; using (var command = new SqlCommand(Sql, Connection)) { command.Parameters.AddWithValue("@SEARCH", searchString); ... } 这不起作用,我也尝试过: const string Sql = @"sele
4 2024-01-19
编程技术问答社区
"LIKE "运算符在MS Access中工作,但在ADO中不工作
我正在尝试使用星号使用"喜欢"过滤记录,它使用访问2010返回许多记录时起作用.我很难过,为什么与ADO一起使用时什么都没有返回.该代码包含多个表和列,因此要进行故障排除,我做了一个简单的查询.这是代码: strsql = "SELECT tproducts.Prod_Name FROM tproducts " _ & " WHERE tproducts.Prod_Name Like " & Chr(34) & "SO*" & Chr(34) Set cn = New ADODB.Connection cn = connString cn.Open Set rs = New ADODB.Recordset rs.Open strsql, cn, adOpenStatic, adLockOptimistic ' test here iRecCount = rs.RecordCount rs.MoveFirst recordCount返回-1. 当"像"被"等于"替换时,
2 2024-01-19
编程技术问答社区
VBScript-在数组中返回一个记录集(类似SQL的功能)
我必须为我公司的会计师编写一个程序,并且我在返回文章的家庭中有一个问题,我想拥有的所有家庭都有一个以" 707"开头的会计代码.这是我在vbscript中的代码: Set objConnection = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BASES\Base.mdb;Persist Security Info=False" rs.CursorLocation = adUseClient FamilleQuery = "Select Code from FamilleArticle Where CptVenteFrance Like '707%'" rs.Open FamilleQuery, objConnection, adOpenS
6 2024-01-19
编程技术问答社区
应用��喜欢�� 使用Hibernate(Mysql)在blob字段上
我必须使用Restrinction的数组构建查询,并且我必须在 blob 字段上应用like. 如果我这样做,它有效: Restrictions.like("DBFieldName", object.getFieldName()); 现在,我需要添加%,但是如果我做类似: 的事情 Restrictions.like("DBFieldName", "%" + object.getFieldName()); 我得到此错误: java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Blob 我该怎么办? 谢谢 解决方案 您无法通过标准将字符串值与blob进行比较,因为最后将尝试将字符串扔到blob上,如果您确实需要这样做,则无法(基本上是Java.sql.blob是界面)比较,您唯一的解决方案是获取斑点值并基于它创建字符串,请使用此示例: byte[] b
2 2024-01-17
编程技术问答社区
jQuery的元素或类LIKE选择器?
无论出于何种原因,我都将这些类称为.main_sub1,.main_sub2等.不要介意为什么我不能拥有.main .sub. jQuery是否有办法,以属性的方式进行操作,以获取包含main的类? 解决方案 使用$("[class^=main]")将选择className 的所有元素以'main'开头.看看关于选择器的jQuery文档,您可以使用许多其他变体,您可以使用许多其他变体例如: [class*=main]将选择className 包含'main' 的元素 [class~=main]将选择className 具有单词'main'(用空格划界) 的元素 [class$=main]将选择className 结束的元素'main' 其他解决方案 是的,您可以使用属性选择器匹配class属性的某些值. $('[class^=main]') // class begins with "main" $('[class*=main]') // class
4 2024-01-11
编程技术问答社区
使用CodeIgniter LIKE活动记录获得MySQL语法错误
这是我的代码 return $this->db ->select('organization') ->like('title',$this->db->escape_str($query)) ->or_like('description',$this->db->escape_str($query)) ->get('shop_search') ->num_rows(); 每件事都很好地工作,直到$query中没有'而不是". 错误是:$query="d'" 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 '%' OR `descript
0 2024-01-10
编程技术问答社区
Ruby on Rails-基于查询的数据库搜索
我有一个简单的表单,我在其中设置了要浏览的查询,例如 panasonic Viera . 这是关于我在数据库中搜索术语的方式: Product.where("name ilike ?", "%#{params[:q]}%").order('price') 查询看起来像%panasonic viera%,但是我需要以这种方式搜索查询: panasonic%viera% - 我需要找到所有产品,标题中的单词 panasonic 或 viera ...但是如何进行查询? 解决方案 一种解决方案是将您的查询分解为单个术语,并构建一组由OR连接的数据库查询. terms = params[:q].split query = terms.map { |term| "name like '%#{term}%'" }.join(" OR ") Product.where(query).order('price') 其他解决方案 如果您使用的是PostgreSQL,则可以使用
6 2024-01-10
编程技术问答社区
使用Like选择时的ActionScript和SQLite参数
我尝试在Google上寻找但没有运气... 我有一个SELECT SQLStatement,我想使用LIKE ocerator,但是参数无法正常工作,查询给我一个错误 public function getUsersList(username:String):SQLStatement { selectRecord= new SQLStatement(); selectRecord.sqlConnection = connection; selectRecord.text = "SELECT id_user, username,password,profile,leg_cliente " + "FROM userlist " + "WHERE usernam
0 2024-01-09
编程技术问答社区
如何在Linq中进行SQL Like %?
我在SQL中有一个过程,我试图将其转变为Linq: SELECT O.Id, O.Name as Organization FROM Organizations O JOIN OrganizationsHierarchy OH ON O.Id=OH.OrganizationsId where OH.Hierarchy like '%/12/%' 我最关心的行是: where OH.Hierarchy like '%/12/%' 我有一列存储层次结构,例如/1/3/12/,所以我只使用%/12/%搜索它. 我的问题是,linq或.net等于使用百分比? 解决方案 .Where(oh => oh.Hierarchy.Contains("/12/")) 您也可以使用.StartsWith()或.EndsWith(). 其他解决方案 使用此: from c in dc.Organization where SqlMethods.Like(c.H
2 2024-01-02
编程技术问答社区
mysql LIKE与双百分比
我只是调试了旧的代码,我在其中发现了一个奇怪的部分.有人有想法吗? full_name LIKE '%%{fullname}%%' 解决方案 如答案,Mihir Dave的评论链接到达,如果您通过%%而不是%,则与SQL没有区别.由于单个%与零或更多字符匹配,因此%%中的每个元谱也将匹配零或更多,最终相同的字符串将匹配一种或另一种方式. 但我猜您的旧代码是前2.6,它以%为单元格式的metacharacter,您必须像%%一样加倍才能获得一个字面的%字符. 另请参见: 我如何选择性地逃脱Python的百分比(%)字符串? library/stdtypes.html#字符串formatting-operations 其他解决方案 我怀疑这是一个遗产问题.我在Python 3.7中也使用了双%,尽管肯定是在较旧的MySQL版本上,而双%的唯一功能是逃脱第二%. 我来了 python3.8> python3.8> ,mysql5.7:将主动通配符传递到喜欢查询
8 2023-12-25
编程技术问答社区
如何在sql plus中使用LIKE语句与多个通配符值?
我的问题是,目前,如果我想查询多个通配符值.我需要做这样的事情. select customername from customers where customername like '%smith' or customername like '%potter' or customer name like '%harris' or customername like '%williams'; 所以我想从专家那里问,有什么更简单的方法可以做到这一点吗? 问候, Sanjan 解决方案 创建100个名称的表 从客户中选择自定义名称c in Inner join customents sames cn on(c.customernamename喜欢'%'+cn.searchforname) 如果有帮助,可以是表变量. 其他解决方案 您可以使用正则表达式 编辑:您可以在线找到大量资源.以 http://66.221.221.222.85/refe
12 2023-12-04
编程技术问答社区
SQL LIKE列值加通配符 DB2
我正在尝试在类似子句中使用列和通配符.我期望这能起作用: WHERE COLUMNA LIKE '%'||COLUMNB||'%' 这是在DB2中支持的? 解决方案 应该能够使用定位语法(WHERE LOCATE(COLUMNB,COLUMNA) > 0
6 2023-12-04
编程技术问答社区
带有参数和通配符的SQL LIKE操作符
我有一个查询,我想返回所有在名称中具有一定字符串的客户端,双方都有通配符.因此,输入可能是"史密斯",我想返回所有诸如"约翰·史密斯公司"或"史密斯和兄弟"之类的东西.我希望提示[客户端],因此我设置了这样的SQL: PARAMETERS Client Text ( 255 ); SELECT * WHERE (((tbl_IncomingChecks.Client) Like'%' + [Client] + '%') ORDER BY tbl_IncomingChecks.Client; 查询没有返回任何结果.请帮助 解决方案 MS Access使用 *作为通配符而不是%,因此您的查询将尝试匹配字面的"%"字符.除非您使用ADO. ,请使用 * en-us/access-help/offer-operator-hp001032253.aspx 其他解决方案 我觉得您的问题在"+"操作员上不应该阅读 WHERE ((tbl_IncomingCheck
4 2023-12-04
编程技术问答社区
如何喜欢"%..."在索引上寻找?
我希望这两个SELECT S具有相同的执行计划和性能.由于LIKE上有一个领先的通配符,因此我希望索引扫描.当我运行此操作并查看计划时,第一个SELECT行为预期(扫描).但是第二个SELECT计划显示索引,并且运行速度更快20倍. 代码: -- Uses index scan, as expected: SELECT 1 FROM AccountAction WHERE AccountNumber LIKE '%441025586401' -- Uses index seek somehow, and runs much faster: declare @empty VARCHAR(30) = '' SELECT 1 FROM AccountAction WHERE AccountNumber LIKE '%441025586401' + @empty 问题: 当模式以通配符开头时,SQL Server如何使用索引? 奖金问
0 2023-12-04
编程技术问答社区